LZWではなく2番目のパスでLZ77 DEFLATEがハフマンエンコーディングを使用するのはなぜですか?それらの組み合わせについて最適なものがありますか?もしそうなら、LZWの出力の性質はLZWや他の方法よりもハフマン圧縮に適していますか?DEFLATEメソッド推論
答えて
LZWは、LZ77と同じように、最初の「ステージ」と同じように、繰り返しのある文字列を利用しようとします。それは、その情報をエントロピーコーディングするという貧弱な仕事をします。 LZWは、より現代的なアプローチに完全に取って代わられています。 LZ77がリテラルとマッチのリストを生成すると、LZWが利用するために残されることは何もなく、その情報のためにほぼ完全に無効なエントロピーコーダを作成します。
ハフマン符号化と同じ役割を果たす他の圧縮方法は、高頻度の文字から利益を得ていますか?ハフマン符号化は最適であることが証明されていますか? –
はい、他にもいくつかあります。例えば。算術符号化、レンジ符号化、および有限状態エントロピーは、速度を犠牲にしてより良い圧縮を提供する。 –
圧縮のパフォーマンスが圧縮のサイズよりも価値があるのはなぜですか?パフォーマンスの違いは素晴らしいですか?また、これらの他の方法を検討していただきありがとうございます。 –
Mark Adler could best answer this question.
LZ77とハフマンがどのように連携するかについての詳細は、いくつかの精査を必要としています。生データを文字列と特別な長さ、距離の組に変換したら、これらの要素をハフマンコードで表現する必要があります。
これはNOTですが、標準的な用語ではありませんが、私たちがビットを "ダイヤルトーン"で読み始めるポイントを呼び出してください。結局のところ、我々のアナロジーでは、ダイヤルトーンは、特定の電話機にマッピングされる一連の番号を指定することができる場所です。だから最初の "ダイヤルトーン"と呼んでください。そのダイヤルトーンでは、文字、長さ - 距離のペア、またはブロックの終わりの3つのうちの1つが続きます。可能性のある文字(「リテラル」)、可能な長さの範囲を示す要素(「長さ」)、および特殊なブロック終了標識はすべて、単一のアルファベットにマージされます。そのアルファベットはハフマンツリーの基礎となります。距離は、長さの直後にしか現れないので、このアルファベットに含める必要はありません。リテラルがデコードされるか、またはデコードされた長さ - 距離のペアは、別の「ダイヤルトーン」ポイントにあり、再び読み込みを開始します。もちろん、ブロックの終わりのシンボルを取得した場合は、別のブロックの先頭または圧縮データの最後に位置しています。
実際には、長さコードまたは距離コードは、基本値を表すコードであり、その後に基本値に追加する整数を形成する余分なビットが続きます。
...
かいつまん。 LZ77は重複排除を提供します。ハフマン符号化はビット削減をもたらす。 It's also on the wiki.
- 1. 汎用メソッドの型推論の問題
- 2. 推薦プラットフォームの推論エンジン
- 3. サブルーチン推論
- 4. 型推論
- 5. F#型推論
- 6. 自動型推論
- 7. ghci randomio型推論
- 8. タイプ推論エンジンhaskell
- 9. スカラパターンマッチングと型推論
- 10. ハスケル推論型エラー
- 11. SPARQL CONSTRUCTの推論
- 12. ≡推論と 'with'パターン
- 13. Typescript推論型エラー
- 14. パターンマッチングの推論型
- 15. タイプ推論 - Monadを推論できませんでした
- 16. GHCの型推論は
- 17. OWLの推論の質問
- 18. C++推論テンプレート引数
- 19. Kotlinのラムダと型推論
- 20. hLDAのマレット推論エンジン
- 21. 型推論入力paramenters
- 22. JDK8型推論問題
- 23. 生成モデルと推論
- 24. F#型推論(コンパイラ出力)
- 25. 値の型推論は
- 26. 型推論の回避策
- 27. 型コンストラクタの型推論
- 28. スウィフトObjectMapperの型推論
- 29. pylint、コルーチン、デコレータと型推論
- 30. 門徒で視覚化推論エクスポート推論公理異なる理由
バックエンドとしてレンジコーダーに向かう可能性がありますが(遅くなり、ビットストリーム内にこれらの拡張ビットを入れるのは面倒です)、今日はおそらくANSです。 – harold