私は、選択した圧縮アルゴリズムを実装するためのコースワークを与えられました。どの言語でもかまいませんが、私が最もよく知っている言語は Java で、次に C です。以下に基づいて評価されます。
圧縮解除された出力は元の入力と一致する必要があるため、損失の少ないアルゴリズムしか見ることができません。
実行時間は、メッセージの長さに比例する必要があります。
メモリ要件は、メッセージの長さとは無関係でなければなりません。
私たちの実装は次のようにテストされます -
標準テキストファイル
0 ~ 255 のバイト値を持つバイナリ ファイル
未指定のコンテンツの最大 10 MB の大きなファイル。
私の最初の考えは、動的算術コーディングを使用することですが、上記の制約により適したアルゴリズムがあるかどうか疑問に思っていますか? 次に、Java ではなく C で行う方が良いでしょうか? Cの方がメモリフットプリントが小さいと思うので、これを尋ねますが、実際にそうであるかどうかはわかりません。
この質問をグーグルで検索したところ、動的ハフマン コーディングと組み合わせた LZW コーディングについて言及しているサイトがいくつかありました。これは追求するのに賢明な道でしょうか?私たちの講師は、何年にもわたって動的ハフマン コーディングを試みた提出物の 90% が正しく実装されていないと警告しました。
そうは言っても、試してみることを恐れていませんが、始める前にいくつかの意見を尊重します.
どんなフィードバックでも大歓迎です。