给定数百GB不同大小的资产,填充一套蓝光光盘的最佳算法是什么?什么是最佳填充DVD刻录的算法
我想整合大量的旧CDROM,DVD和小硬盘,并将所有内容放入由MD5签名索引的数据库中。肯定是一项艰巨的任务。
我目前所做的是按照降序对资产大小(通常是目录大小)进行排序,开始在填充列表中插入最大的资产,跳过所有不适合的资产,直到资源用完。它几乎是瞬间运行,但我不介意如果有必要一夜过夜。
它通常会给我95%或更多的利用率,但我相信有一种方法可以使用其他组合来提高效率。对于像磁盘映像这样的大型项目,我可以通过这种原始方法获得相当低的利用率。
我的想法是采取所有资产的组合,一次2,然后3,...一次,并保持一个运行值的最高字节数< 25,025,314,816字节指向数组,其总和它。当我得到一次只有很多资产都没有被使用的情况时,停止并使用运行最高计数器指向的数组。
这是最好的算法吗?
有2个Perl模块可以完成任务,Algorithm-Combinatorics和Math-Combinatorics。任何建议更快,更稳定,更酷?
我的方案是编写一个脚本来计算大量目录的大小,并向我展示几十个要刻录的磁盘的最佳内容。
而且,我不想只是逐个文件地填充文件,因为我希望整个目录位于同一张光盘上。
编号Knappsack有2个变量 – Bytemain 2012-07-27 01:19:26
那么是什么?你可以设置所有的元素为1的“值”为例 – anttix 2012-07-27 01:23:09
当然,你可以这样做,但它是否适用于公制字节和千字节?它是虚拟的 – Bytemain 2012-07-27 01:25:23