1

我有以下算法问题

给定一个客户订单,描述不同长度的多种木材,精度为小数点后 2 位。例如:2 * 1,50;2 * 0,50(需要 4 块木材,2 块长度 1,50 米,两块长度 0,50 米)。

库存的木材数量不限,但固定长度为 2、3、4 和 5 米。 客户订单的木材需要从库存的梁上切割下来。切割本身具有 0 厚度作为理想化。 客户订单中的任何梁长度 > 5,00 米都是不可能的。

目标是最大限度地减少木材的浪费,这是完成客户订单后的结果。当存在多个浪费最少的解决方案时,削减量最少的解决方案是最佳解决方案。

在上面提到的客户订单示例中,一个人将从库存中取出两块 2.00 米的木材,并将它们分别切割成 0.5 米和 1.5 米的一块。因此,该算法将产生浪费 = 0,有 2 次削减。

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 

在客户订单中给定数量的光束下,蛮力方法的性能非常差。

任何人都有一个好的算法方法的想法?关于大复杂度的任何想法?

4

0 回答 0