15.3-1
运行RECURSIVE-MATRIX-CHAIN更高效一点。
第15.2节指出枚举所有可能的括号化方案是 Ω(4n/n3/2)。下面证明RECURSIVE-MATRIX-CHAIN是 O(n3n−1)。
书中的本节证明了:
我们证明存在 c使得
使用替换法证明 T(n)=O(n3n−1)。
T(1)=1≤c,对 n≥2有:
所以
RECURSIVE-MATRIX-CHAIN更高效。 注释:
15.3-2
递归树略,无效的原因是没有重叠子问题。
15.3-3
具有最优子结构性质。假设 Aij是最优解,一定存在一个 k使
15.3-4
举例为 p0=100,p1=100,p2=5,p3=10,p4=1分别表示 A1,A2,A3,A4
按教授的意思选择 k=2有 (A1A2)(A3A4),总共 p0⋅p1⋅p2+p2⋅p3⋅p4+p0⋅p2⋅p4=51000
实际存在 A1((A2A3)A4),总共 p0⋅p1⋅p4+p1⋅p2⋅p3+p1⋅p2⋅p4=15500
15.3-5
给出一个长度为 4 的价格和限制表。
| Length i | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| price Pi | 15 | 20 | 33 | 36 |
| limit li | 2 | 1 | 1 | 1 |
若没有限制表,长度为 4 的切割方案是 4 个长度为 1 的总价是 60。
现在只能选择长度分别是 1,1,2 总价是 50 的切割方案,原因是在长度为 2 的子问题寻找最优解时不能继续切割成长度为 1,1 的方案。
15.3-6
首先假设在一次兑换中不能重复兑换某一种货币,比如兑换序列为 i→j→i→j...。这个假设的原因是若 rij>1/rji,这样银行就要倒闭了。
当对任意 k都有
利用剪切-粘贴方法证明,即假设最优兑换序列是 ki,ki+1...kj,又存在另一个兑换序列 ki,k′i+1...k′j−1,kj使得rkik′i+1rk′i+1k′i+2...rk′j−1kj>rkiki+1rki+1ki+2...rkj−1kj,我们用ki,k′i+1...k′j−1,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。