給定數百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