我有不同大小的对象束(很多对象可以有相同的大小,例如:我有54个6B的对象,10B的76个,24B的79个等。
对象的大小是6,8,10 ......字节。我需要将这个包打包成几个消息(每个消息的最大长度为256个字节)。
问题是如何使用最少数量的消息获得解决方案?
这有什么已知的算法吗?我需要Hopfield神经网络吗?
答案 0 :(得分:3)
这是bin packing problem的一个例子,它是一个组合的NP难问题。最简单的算法是“First Fit Decreasing(FFD)”,您首先通过减小大小来对对象进行排序,然后将每个对象插入列表中的第一条消息,并留出足够的剩余空间。
答案 1 :(得分:1)
这是一种背包问题,但不是 背包问题。它是Bin packing problem,其中不同卷的项目包含在最小数量的箱子中,这些箱子的大小都相同。这是NP难的。
答案 2 :(得分:0)
First Fit Decreasing(FFD)算法不是最佳算法(但是一个非常好的开始)。如果您有更多执行时间和更多开发时间,请使用simulated annealing,禁忌搜索或遗传算法<链接< / em>的。忽略暴力或分支和绑定:它们不会超出玩具问题。