如何解决有没有什么算法我可以研究这个类似装箱的问题?
我试图找到一种方法来解决我认为与装箱类似的问题,但我的理解略有不同。就我而言,目标是将尽可能多的袋子放入每个垃圾箱,而不是使用最少的垃圾箱。也许这是一个最合适的算法?
在我的示例中,我有一个可以容纳多个袋子的数字箱,每个箱只能容纳包含特定属性的袋子。每个包可以有多个属性。目标是尽可能使用最多数量的袋子。我觉得我的问题可能有更好的术语,但我不确定。
就我而言,每当我必须对它们进行分类时,我都完全了解可用的垃圾箱和袋子。
一个简单的例子
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 bag 应该进入 bin 3。我最初的想法是循环遍历具有最少属性的 bin,先填充它们。
我想知道是否有解决像我这样的问题的既定算法。
解决方法
您希望在可放置袋子和插槽的二部图中使用 maximum cardinality matching。 Hopcroft--Karp 将有效地完成工作。
,我不确定具有 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
虽然不是一个完美的解决方案,但我认为它会让你开始......也许对每个垃圾箱再次使用相同的算法,垃圾箱从最高计数到最低计数。
,当然。调查:
- Divide and Conquer:它的基础是将你的复合问题分成更小但相似的子问题,直到你达到平凡
- Backtracking:尝试每一种可能性,完成后比较结果(完美,但很慢)
- Dynamic Pogramming
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。