【发布时间】:2014-09-04 13:12:02
【问题描述】:
我最近看到了一个棒材切割问题,其中 B(i) = 切割长度为 i 单位的棒材的最优价格,p(i) = 长度为 i 单位的棒材的价格。
给出的算法是这样的: B(i) = max(1
不应该是这样的吗: B(i) = max(1 其中 B(1) = p(1);
这样两部分都具有最佳成本,而不是单个杆的成本和第二部分的最佳成本。
for example: B(4) = max{ (B(1) + B(3)); (B(2) + B(2)) }
instead of max{ (p(1) + B(3)); (p(2) + B(2)); (p(3) + B(1)) }
有人可以解释一下吗?
【问题讨论】:
-
不清楚 p 和 B 之间的关系是什么(语义上,而不是数学上),但原始算法似乎假设 p 是提供的,而不是从 B 确定的。因为你的提议完全忽略了 p ,我猜它不会产生相同的结果。
-
@Scott Hunter 是的,给出的 p 是一定长度的杆的成本
标签: algorithm dynamic-programming