CLRS 15.3动态规划原理

来源:互联网 发布:如何把mac里的照片导出 编辑:程序博客网 时间:2024/06/07 10:44

15.3-1
运行RECURSIVE-MATRIX-CHAIN更高效一点。
第15.2节指出枚举所有可能的括号化方案是 Ω(4n/n3/2)。下面证明RECURSIVE-MATRIX-CHAINO(n3n1)
书中的本节证明了:

T(n)=O(1)+k=1n1(T(k)+T(nk)+O(1))

我们证明存在 c 使得
T(n)c+k=1n1(T(k)+T(nk)+c)=2i=1n1T(i)+cn

使用替换法证明 T(n)=O(n3n1)
T(1)=1c,对 n2有:
T(n)2i=1n1T(i)+cn2i=1n1ci3i1+cnc(2i=1n1i3i1+n)=c(2(n3n131+13n(31)2)+n)=cn3n1+c(13n2+n)=cn3n1+c2(2n+13n)cn3n1

所以RECURSIVE-MATRIX-CHAIN更高效。
注释:
f(x)=i=1n1xi,f(x)i=1n1ixi1=nxn1x1+1xn(x1)2

15.3-2
递归树略,无效的原因是没有重叠子问题。

15.3-3
具有最优子结构性质。假设 Aij 是最优解,一定存在一个 k 使 Aik,Ak+1,j 都是最大化。用剪切-粘贴方法可以证明。

15.3-4
举例为 p0=100,p1=100,p2=5,p3=10,p4=1 分别表示 A1,A2,A3,A4
按教授的意思选择 k=2(A1A2)(A3A4),总共 p0p1p2+p2p3p4+p0p2p4=51000
实际存在 A1((A2A3)A4),总共 p0p1p4+p1p2p3+p1p2p4=15500

15.3-5
给出一个长度为 4 的价格和限制表。

Length i1234price Pi15203336limit li2111

若没有限制表,长度为 4 的切割方案是 4 个长度为 1 的总价是 60。
现在只能选择长度分别是 1,1,2 总价是 50 的切割方案,原因是在长度为 2 的子问题寻找最优解时不能继续切割成长度为 1,1 的方案。

15.3-6
首先假设在一次兑换中不能重复兑换某一种货币,比如兑换序列为 ijij...。这个假设的原因是若 rij>1/rji,这样银行就要倒闭了。
当对任意 k 都有 ck=0 时有最优子结构性质。假设从货币 a 兑换到货币 b 存在一个兑换序列 k1,k2...km,其中 k1=a,km=b,使得 rk1k2rk2k3...rkm1km 最大。
利用剪切-粘贴方法证明,即假设最优兑换序列是 ki,ki+1...kj,又存在另一个兑换序列 ki,ki+1...kj1,kj 使得rkiki+1rki+1ki+2...rkj1kj>rkiki+1rki+1ki+2...rkj1kj,我们用ki,ki+1...kj1,kj 序列代替 ki,ki+1...kj 得到更优解。
ck 为任意值时,此时不一定具有最优子结构,举个例子,从货币 1 兑换到 货币 4,汇率分别是 r12=2,r13=2.5,r14=6,r23=1.5,r24=3,r34=3,其中 rii=1,rji=1/rij。令 c1=2,c2=c3=3。所以兑换货币 1 到货币 4 有 5 种兑换方法,最优解是序列 1,2,3,4,最后 1 个单位的货币 1 兑换成 6 个单位的货币 4。
然后检查子结构,从货币 1 兑换到货币 3,最优兑换序列就是 1,3。这个兑换序列并不是 1,2,3

0 0