这是一个问题,我认为已经有一个算法 - 但我不知道正确的话使用谷歌似乎:).
问题:我想创建一个小程序,我将选择一个包含任何文件的目录(但我的目的是媒体文件,音频和视频).之后,我想以MB输入不得超过的最大文件总大小.此时,您将点击"计算最佳拟合"按钮.
此按钮应比较目录中的所有文件,并提供一个文件列表,这些文件放在一起时最接近最大文件总大小而不超过限制.
这样,您可以在刻录CD或DVD时找出要合并的文件,以便您可以尽可能多地使用光盘.
我试图为此自己提出算法 - 但失败了:(.
有人知道一些很好的算法吗?
提前致谢 :)
正如其他人指出的那样,这是一个组合优化问题的背包问题.这意味着您要查找集合的某些子集或置换,以最小化(或最大化)某个成本.另一个众所周知的问题是旅行推销员问题.
这些问题通常很难解决.但如果您对几乎最优的解决方案感兴趣,可以使用非确定性算法,如模拟退火.您很可能无法获得最佳解决方案,但几乎是最佳解决方案.
此链接解释了模拟退火如何解决背包问题,因此您应该感兴趣.