Algorithm 棒切割变体
我有以下算法问题: 给定一份客户订单,描述不同长度的多个木材,精度为小数点后2位。 例如:2*1,50;2*0.50(需要4块木材,2块长度为1.50米,两块长度为0.50米) 库存木材数量不限,但长度固定为2、3、4和5米。 客户订单中的木材需要从库存梁中切割。作为理想化,切口本身的厚度为0。Algorithm 棒切割变体,algorithm,optimization,recursion,big-o,brute-force,Algorithm,Optimization,Recursion,Big O,Brute Force,我有以下算法问题: 给定一份客户订单,描述不同长度的多个木材,精度为小数点后2位。 例如:2*1,50;2*0.50(需要4块木材,2块长度为1.50米,两块长度为0.50米) 库存木材数量不限,但长度固定为2、3、4和5米。 客户订单中的木材需要从库存梁中切割。作为理想化,切口本身的厚度为0。 客户订单中的任何光束长度>5,00米都是不可能的。 目标是最大限度地减少完成客户订单后造成的木材浪费。当存在多个具有最小浪费的解决方案时,具有最小切割量的解决方案是最佳解决方案。 在上面提到的客户订单示
客户订单中的任何光束长度>5,00米都是不可能的。 目标是最大限度地减少完成客户订单后造成的木材浪费。当存在多个具有最小浪费的解决方案时,具有最小切割量的解决方案是最佳解决方案。 在上面提到的客户订单示例中,将从库存中取出两块2,00米的木材,并将它们分别切成0,5米和1,5米的一块。 因此,该算法将产生2次切割的浪费=0
Example 1:
Customer order: 2 * 1,50 ; 2 * 0,50
Output:
Total waste: 0
Total cuts: 2
2,00 --> 1,50 ; 0,50 waste 0
2,00 --> 1,50 ; 0,50 waste 0
Example 2:
Customer order: 2 * 2,48 ; 1 * 2,68 ; 2 * 3,12 ; 1 * 1,32; 2 * 1,33 ; 1 * 1,34
Output:
Total waste: 1,80
Total cuts: 7
4,00 --> 1,33 ; 1,33 ; 1,34 waste 0
4,00 --> 2,68 ; 1,32 waste 0
4,00 --> 3,12 ; waste 0,88
4,00 --> 3,12 ; waste 0,88
5,00 --> 2,48 ; 2,48 waste 0,04
在客户订单中给定数量的梁上,蛮力方法的性能非常差
有谁能想出一个好的算法方法吗?
关于big-o复杂性有什么想法吗?听起来与类似。这很相似,但在我的问题中,客户订单中的木材没有固定长度。换句话说,客户订单中可能需要10根横梁,每根横梁的长度不同。是否只有尺寸为2、3、4、5的木材可用?如果客户需要尺寸为10的木材,客户订单中任何横梁长度>5,00米都是不可能的。总订单的最大数量是多少??