【发布时间】:2012-10-01 11:27:14
【问题描述】:
我们有一大堆机器使用一大堆数据存储。我们希望将所有机器的数据转移到新的数据存储中。这些新商店的机器可用存储空间量各不相同。此外,每台机器需要存储的数据量各不相同。一台机器的所有数据都必须存储在一个数据存储中;它不能被拆分。除此之外,如何分配数据并不重要。
我们目前拥有的数据多于我们的空间,因此某些机器不可避免地需要将其数据留在原处,直到我们找到更多数据。与此同时,有没有人知道一种算法(相对简单:我没那么聪明),它可以为我们拥有的存储提供最佳或接近最佳的分配(即分配后新商店剩余的空间最少)?
我知道这听起来像是一个家庭作业问题,但我向你保证这是真的!
【问题讨论】:
-
我有一种感觉这是 NP-hard... 它与一个称为 0-1 多重背包问题(我认为是 NP-hard)的问题非常相似,它本身就是一个一个经过充分研究的背包问题的版本。这应该给你一个看的方向......
-
在任何情况下,您都可以将问题写成整数线性程序(按照背包问题的处理方式 - 这很容易),然后使用免费的现成 ILP 求解器得到一个合理的解决方案。
-
谢谢 Bitwise,我会调查的。从维基百科条目开始,似乎是同样的问题:)
-
祝你好运,注意有一点不同,因为在背包问题中,通常每个项目都有一个“重量”(在你的情况下是空格)和一个“价值”(我猜在您的情况是恒定的或与重量相同)。
标签: algorithm storage allocation