现在的位置: 首页 > 综合 > 正文

磁带文件存放优化

2018年10月18日 ⁄ 综合 ⁄ 共 752字 ⁄ 字号 评论关闭

磁带文件存放优化
《编程之美》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是最优解相矛盾。

抱歉!评论已关闭.