铲斗中的重量分布,以使使用的铲斗数最少

问题描述

我有n个权重,称重{A1,A2,...,An},然后我必须将其划分为多个桶,以便需要最少数量的桶,并且每个桶的最大容量为Cmax和Ai

{2,3,4,5} and Cmax=10
 So,result should be {{5,2},{4}} . 

其他可能的解决方案是{5,4},{3,2},但这是不可接受的。 每个初始集合应尽可能接近Cmax

解决方法

可悲的是,这是NP难题,因此只有通过蛮力方法才能保证确切的解决方案-检查所有可能的变体。问题大小可能很小(n,buckets < 10..15)-有N^Buckets个变体。

否则,(通常在n < 100情况下,您可以尝试一些离散优化方法,例如Branch and bound算法(当当前解决方案变得比已经发现的最佳解决方案差时停止搜索)