需要算法将不同大小的文件分组为大致相等的块

时间:2009-08-13 08:29:54

标签: algorithm file size grouping np-complete

我正在试图找出一种算法,它可以帮助我将各种不同大小的文件分组成大小相等的'n'组。

关于如何实现这一目标的任何想法?

3 个答案:

答案 0 :(得分:6)

Find the target group size. This is the sum of all sizes divided by n.
Create a list of sizes.
Sort the files decreasing in size. 
for each group
    while the remaining space in your group is bigger than the first element of the list
        take the first element of the list and move it to the group
    for each element
        find the elemnet for which the difference between group size and target group size is minimal
    move this elemnt to the group

这不会产生最佳效果,但易于实施并获得良好效果。对于最佳解决方案,您需要进行详尽的搜索,即NP完成。

答案 1 :(得分:2)

K means可能会对您有所帮助。研究更高级的聚类算法是一个很好的起点,但鉴于你的问题是一维的,k-means应该绰绰有余。

答案 2 :(得分:2)

您的隐式优化目标最有可能最小化n,组数。然后你有bin packing problem,有时称为cutting stock problem

Netlib有fortran code来解决更一般的多背包问题(项目有利润以及成本/重量值)。