杆切割变型

时间:2013-06-27 12:16:40

标签: algorithm optimization recursion big-o brute-force

我有以下算法问题

根据客户订单描述不同长度的多种木材,精度为小数点后2位。 例如:2 * 1,50; 2 * 0,50(需要4根木材,2根长度为1,50米,2根长度为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 

对于客户订单中给定数量的梁,蛮力方法的性能非常差。

有人想要一个好的算法方法吗? 关于大复杂性的任何想法?

0 个答案:

没有答案