【问题标题】:Simpler recurrence of Dynamic Programming Rod-cutting动态规划杆切割的更简单的重现
【发布时间】:2016-01-27 01:22:10
【问题描述】:

在 CLRS 中,棒材切割问题的递归解是:

rn = max (pn, r1+rn-1,... ,rn-1+r1)

这个重复很清楚,我明白了。

但是,我很难理解书中提供的这种重复的简单版本,即:

rn = max1(pi + rn-i) ,其中 pi 是长度 i 的成本。

我不明白,这个循环和第一次循环有什么相似之处。对我来说,第二次重复可能会错过最佳解决方案,因为我们没有考虑第一次切割的最佳成本(我们只是采用正常价格)。

我们不应该总是像第一个方程一样考虑双方的优化成本吗?

【问题讨论】:

    标签: algorithm optimization


    【解决方案1】:

    这是推理。

    最佳剪裁必须包括一段长度i。这件作品将以p<sub>i</sub> 的价格出售。然后,您会将杆的其余部分切割成其他部分,并且最好将其切割成最佳状态。

    因此,我们只需要在剪辑中找到其中一个。递归将负责找出其余部分。

    这正是更简单的递归所做的。

    【讨论】:

    • 感谢您的解释。这消除了我的困惑。
    【解决方案2】:

    虽然这个回复晚了。无论如何,我还是想发布它,因为我对同样的路线感到困惑。

    我认为当我们认为两个公式都可以替换另一个时,就会出现混淆。 虽然他们计算相同的现象,但它是通过两种不同的方式完成的:

    令,B(i) = 切割长度为 i 单位的杆的最优价格,p(i)​​ = 长度为 i 单位的杆的价格。

    公式 1:B(i) = max(1

    公式 2:B(i) = max(1

    考虑一根长度为 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 更紧凑,递归调用更少。

    【讨论】:

      【解决方案3】:

      除了其他人给出的解释外,我想指出的是,第二次递归实际上消除了常见的杆切割子问题,例如在任一位置 i=1 处发生车辙的尺寸为 n=4 的杆或 i=3,即从任一端切下一个单元。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-08
        • 2017-10-29
        相关资源
        最近更新 更多