对于作业,我遇到了装箱问题,并要求您说明如何从优化版本中解决问题的决策版本,反之亦然。我理解为了解决决策版本,您只需获取优化版本中使用的箱柜数量,并将其与指定的最大箱数进行比较,但如何使用决策版本来解决优化版本?
答案 0 :(得分:3)
您可以使用决策版本来解决优化版本,方法是观察N
二进制位是否足够,那么K > N
二进制位也就足够了。
从单个bin开始,然后在其上运行决策版本。如果答案是true
,那么你就完成了;否则,在点击true
之前,请保持箱数增加一倍。假设您在尝试true
时得到N = 2 ^ k
的答案。然后,您可以在M = 2^(k-1)
和N
之间运行二进制搜索,以找到优化问题的确切解决方案({1}}和N
来自上一步骤
考虑这个例子:假设最佳解决方案是14.然后您可以尝试以下决策问题序列来找到答案:
k
false
(加倍1)false
(加倍2)false
(加倍4)false
(加倍8;我们有一个true
,所以继续进行二分搜索)true
(8到16之间的中点)false
(12到16之间的中点)true
(12到14之间的中点)一般来说,答案可以在对数时间内找到(即在Log 2 (答案))。
一旦知道打包false
个对象所需的bin N
数量,请在一侧的项目和另一侧的X
二进制文件之间运行二分匹配算法。假设决策问题得到了正确解决,那么必须存在这样的二分匹配and can be found in polynomial time。