【发布时间】:2012-07-25 16:21:35
【问题描述】:
在给定数百 GB 不同大小的资产的情况下,填充一组蓝光光盘的最佳算法是什么?
我正在尝试整合大量旧 CDROM、DVD 和小型硬盘驱动器,并将所有内容放入由 MD5 签名索引的数据库中。肯定是一项艰巨的任务。
我目前所做的是按降序对资产大小(通常是目录大小)进行排序,开始在填充列表中插入最大的资产,跳过任何不适合的资产,直到我用完资产。它几乎可以立即运行,但如果有必要,我不介意一夜之间运行。
它通常给我 95% 或更多的利用率,但我确信有一种方法可以使用其他组合来提供更高的效率。对于像磁盘映像这样的大型项目,我可以通过这种原始方法获得相当低的利用率。
我的想法是一次获取所有资产组合,1 然后 2,然后 3,... 项目,并保持最高字节数
这是最好的算法吗?
有 2 个 Perl 模块似乎可以胜任这项任务,Algorithm-Combinatorics 和 Math-Combinatorics。有什么更快、更稳定、更酷的建议吗?
我的方案是编写一个脚本来计算大量目录的大小,并显示要刻录的几十个磁盘的最佳内容。
而且,我不想只是逐个文件地填写,因为我希望整个目录都在同一张光盘上。
【问题讨论】: