您的位置:首页 > 编程语言

磁带文件存放优化

2012-03-19 22:35 417 查看
磁带文件存放优化

《编程之美》4.5

书上给出的算法属于贪心算法。关于贪心算法,最重要的在于证明其正确性。

1、证明贪心选择性。

设X={x1,x2,x3,…,xn}是一个最优解.其中,作业xi的长度为L[xi],访问的概率为P[xi]。

设Y={y1,y2,y3,…,yn}是一个贪心解。其中,P[yi]/L[yi]>=P[y(i+1)]/L[y(i+1)]。

如果X和Y完全一样,则贪心解就是一个最优解。

如果X和Y不一样,设xi和yi是第一个不同的作业。设yi是X中的xj。

X=x1,x2,x3,..,xi,…,xj,…,xn

把xj插入到xi的前边,则X变成

X’=x1,x2,x3,…,xj,xi,…,xn

设X的代价是E(X),X’的代价是E(X’)。

E(X’)-E(X)=(P[xi]+P[x(i+1)]+…P[x(j-1)])*L[xj]-(L[xi]+L[x(i+1)]+…+L[x(j-1)])*P[xj]=

设xi<=xk<=x(j-1)。根据Y是一个贪心解可知:P[xj]/L[xj]>=P[xk]/L[xk],即:

P[xj]* L[xk]>= L[xj]* P[xk]

E(X’)-E(X)= ∑(P[xk]*L[xj]-L[xk]*P[xj]), xi<=xk<=x(j-1)

<=0

所以,X’也是一个最优解。

2、证明最有子结构

设X={x1,x2,x3,…,xn}是贪心算法得到的最优解。去除最后一个xn之后的子问题的最优解是subX={ x1,x2,x3,…,x(n-1)}。如果subX不是子问题的最优解,那么假设子问题的最优解释Y’,E(Y’∪xn)=E(Y’)+( L[x1]+L[x2]+…+L[xn])*P[xn]<E(Y)+( L[x1]+L[x2]+…+L[xn])*P[xn].这与X是最优解相矛盾。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  优化 算法 作业 编程