Bin打包,决策与优化

时间:2013-12-01 05:38:26

标签: algorithm optimization bin-packing

对于作业,我遇到了装箱问题,并要求您说明如何从优化版本中解决问题的决策版本,反之亦然。我理解为了解决决策版本,您只需获取优化版本中使用的箱柜数量,并将其与指定的最大箱数进行比较,但如何使用决策版本来解决优化版本?

1 个答案:

答案 0 :(得分:3)

您可以使用决策版本来解决优化版本,方法是观察N二进制位是否足够,那么K > N二进制位也就足够了。

从单个bin开始,然后在其上运行决策版本。如果答案是true,那么你就完成了;否则,在点击true之前,请保持箱数增加一倍。假设您在尝试true时得到N = 2 ^ k的答案。然后,您可以在M = 2^(k-1)N之间运行二进制搜索,以找到优化问题的确切解决方案({1}}和N来自上一步骤

考虑这个例子:假设最佳解决方案是14.然后您可以尝试以下决策问题序列来找到答案:

  • 1 - > k
  • 2 - > false(加倍1)
  • 4 - > false(加倍2)
  • 8 - > false(加倍4)
  • 16 - > false(加倍8;我们有一个true,所以继续进行二分搜索)
  • 12 - > true(8到16之间的中点)
  • 14 - > false(12到16之间的中点)
  • 13 - > true(12到14之间的中点)

一般来说,答案可以在对数时间内找到(即在Log 2 (答案))。

一旦知道打包false个对象所需的bin N数量,请在一侧的项目和另一侧的X二进制文件之间运行二分匹配算法。假设决策问题得到了正确解决,那么必须存在这样的二分匹配and can be found in polynomial time