对于这个类似垃圾箱包装的问题,我有什么算法可以研究吗



我正试图找到一种方法来解决一个我认为类似于装箱的问题,但我的理解略有不同。在我的案例中,目标是在每个垃圾箱中放入尽可能多的袋子,而不是使用最少的垃圾箱。也许这是一个最适合的算法?

在我的例子中,我有一个可以容纳多个袋子的多个箱子,每个箱子只容纳包含特定属性的袋子。每个包都可以有多个属性。目标是尽可能多地使用袋子。我觉得可能有一个更好的术语来形容我的问题,但我不确定。

就我而言,每当我必须分拣垃圾箱和袋子时,我都完全知道它们有哪些。

的一个简单例子

bin 1 allows attribute X with 1 slot
bin 2 allows attribute Y with 1 slot
bin 3 allows attribute Z with 1 slot
1 bag has attribute X, Y and Z
2 bags have attribute X and Y

在这个例子中,很明显,Z袋子应该放在3号箱子里。我最初的想法是循环浏览属性数量最少的垃圾箱,首先填充它们。

我想知道是否有现成的算法可以解决像我这样的问题。

您希望在可以放置袋子和插槽的二分图中进行最大基数匹配。霍普克罗夫特——卡普会高效地完成这项工作。

我不确定带有X、Y和Z属性的袋子是否应该放在Bin Z中。如果你有50个袋子只有Z属性,该怎么办?也许我不完全理解这个问题。。。

假设我理解正确,你希望垃圾箱之间的分布均匀。

Sort by number of attributes
if (1 attribute) 
place in matching bin
else
place in matching bin with lowest count

虽然不是一个完美的解决方案,但我认为它会让你开始。。。也许对每个箱子再次使用相同的算法,箱子从最高计数到最低计数排序。

当然。调查:

  • 分而治之:它的基础是将你的复合问题划分为更小但相似的子问题,直到你达到琐碎
  • 回溯:尝试每一种可能性,完成后比较结果(完美,但缓慢(
  • 动态Pograming

最新更新