动态规划杆切割的简单再现

时间:2016-01-27 01:22:10

标签: algorithm optimization

在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的成本。

我不明白,这种复发是如何与第一次复发相似的。对我来说,第二次重复可能会错过最佳解决方案,因为我们没有考虑第一次削减的最佳成本(我们只是采取它的正常价格)。

难道我们不应该像第一个等式那样考虑双方的优化成本吗?

3 个答案:

答案 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,即从一端切下一个单元。