在CLRS中,棒切割问题的递归解决方案是:
r n = max(p n ,r 1 + r n-1 ,...中,r <子> N-1 子> + R <子> 1 子>)
这种复发很清楚,我明白了。
然而,我很难理解书中提供的这种复发的简单版本,即:
r n = max 1&lt; = i&lt; = n (p i + r ni ),其中p i 是长度为i的成本。
我不明白,这种复发是如何与第一次复发相似的。对我来说,第二次重复可能会错过最佳解决方案,因为我们没有考虑第一次削减的最佳成本(我们只是采取它的正常价格)。
难道我们不应该像第一个等式那样考虑双方的优化成本吗?
答案 0 :(得分:1)
这是推理。
最佳剪裁必须包含一段i
长度。该作品将以pi
的价格出售。然后,您将把杆的其余部分切割成其他部件,并且最好不要将其切割成最佳状态。
因此我们只需要找到切割中的一件。递归将负责计算其余部分。
这正是更简单的复发所做的。
答案 1 :(得分:0)
尽管此回复已延迟。无论如何,我还是想发布它,因为我一直都感到困惑。
当我们认为两个公式都可以替代另一个公式时,我会感到困惑。 尽管他们计数相同的现象,但是可以通过两种不同的方式完成:
让,B(i)=切割长度为i单位的棒的最优价格,p(i)=长度为i单位的棒的价格。
公式1:B(i)= max(1 <= k <= floor(i / 2)){B(k)+ B(i-k)}和P(i)
公式2:B(i)= max(1 <= k <= i){p(k)+ B(i-k)})
考虑一根长度为4的杆,可以用以下方法将其切割:
1)未切割长度为4
2)3,1
3)2、2
4)2、1、1
5)1、3
6)1、2、1
7)1、1、2
8)1,1,1,1
根据公式1:
选项1对应于P(4)
选项2,5,6,7,8对应于B(1)+ B(3)
选项3、4、6、7、8对应于B(2)+ B(2)
根据公式2:
选项1对应于P(4)
选项2对应于P(3)+ B(1)
选项3,4对应于P(2)+ B(2)
选项5,6,7,8对应于P(1)+ B(3)
因此,可以得出结论,1和2在计算最佳解决方案,但是以不同的方式,与1相比,2更紧凑,递归调用更少。
答案 2 :(得分:0)
除了其他人给出的解释外,我想指出的是,第二次递归实际上消除了常见的杆切割子问题,例如在i = 1的任一位置处破坏尺寸为n = 4的杆或i = 3,即从一端切下一个单元。