プログラムは、ペアのファイルの圧縮率をチェックし、アーカイバーによる圧縮のためにリストをソートします。
sourceforge.net/projects/saro-vks
誰かがそれを必要とするならば、それを取りなさい。
一般に、この考え方は新しいものではありません。たとえば、5番目のバージョンのWinRARは重複を見つけて、リンクとしてアーカイブに保存できます。
ここでは、同様の原則-ファイルの「類似性」は圧縮チェックによって決定されます。
ファイルのペアのサイズがアーカイブの「辞書」のサイズよりも大きい場合、大きなファイルで最良の結果が得られます。
たとえば、工場出荷時のソートと比較して、それぞれ約50 MBの1.5 GBの実行可能ファイルは709 MBから696 MBに縮小し、25 MBのMIDIファイルのアーカイブはそれぞれ30..300 kBから5.55 MBから5.51 MBに減少しました。
明確にするために、アルゴリズムに応じたいくつかの写真。
最初に、ペアの圧縮率がチェックされます-N * Nファイルのマトリックスが塗りつぶされます(ひし形で-リストから最後のファイルを削除すると、最初のファイルについてすでに取得された結果が保存されます)。

次に、シーケンスは「ウィンドウ」でソートされます。ウィンドウ内で、ファイルの可能なすべての組み合わせが重複なしで検索され(階乗N)、最小サイズの組み合わせが残ります。
ウィンドウはリスト全体で徐々に移動しますが、サイズは減少し続けます。
小さいサイズがどこにも見つからない場合、ソートは完了しています。

ps気の毒なバージョンをおaびしますが、「dopilivanie」は遅く、最終バージョンがいつになるか-不明ですが、それを使用することはすでに可能です。
大きなマイナスがありますが、ファイルペアを含むアーカイブのサイズは4 GBに制限されています(非常に大きなファイルは不要で、64ビットサイズの処理には時間がかかりました)。
何かが欠けている場合-書き込み、可能であればそれを行います。