上級プログラマのレッスン - 道路の建築家(10) - ハフマン木

免責事項:この記事はブロガーオリジナル記事です、続く BY-SAのCC 4.0を 著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/m0_37609579/article/details/99691368

まず、ホフマン(ハフマン)の起源は、

歴史の中で1長距離通信の問題

テキスト情報、メイン電報を送信するための初期距離通信。

  • 小A:どのように「などのテキストの内容になるBADCADFEEDは、」ネットワークを介して、他の人にそれを渡しますか?
  • 少しB:バイナリエンコーディングを使用してこれらの文字、符号化および伝送線路ああ。
  • 小D:はい、電信は「ドロップ」しないと、「A、」まあ?
  • 小A:次に、どのようにそれをコーディング?
  • 小さなC:あなたはASCIIコードを聞いたことがないことがありますか?
  • 小A:ああ、その後、何のASCIIコードはありませんか?

2.元の溶液

あなたは次のようにコードを使用することができるように、テキスト「BADCADFEED」の送信の場合のみ「ABCDEF」の6つの文字は、定期的なので:

受信者は、テキスト情報を復元するために一度3ビット、文字符号化方法を実行することができます。

3.しかし、この方式でのパフォーマンスに重大な問題があります:

  • そのような符号化は、10ビット文字を表すために30ビットを必要と
  • だから、送信情報500文字は、15,000ビットのビットを必要とするとき

戦時中、この符号化方式は、情報の送受信のための非常に非効率とエラーが発生しやすいです。

4.どのようにトランシーバの効率を向上させるには?

第二に、ハフマンコーディング

1.新しいコーディング

各文字を避けるために、最初から符号化の効率と必要性を向上させるために、同じビット位置を占めます。

2.効率性の向上

  • 改善された符号化は、10ビット文字を表すことができる唯一の25ビットを必要と
  • 伝送文字の増加に伴い、この利点はより明白になります
  • 効率が17%向上!

第三に、ハフマンツリー構築手順

繊細:任意の1文字の接頭コードを別の文字でエンコードされていません!

n個の重みがあると仮定し、ハフマン木は、n個のリーフノードで構成されています。n個の重み値をW1に設定されている、W2、...、建設ルールWN、ハフマンツリーは次のとおりです。

  1. W1は、W2、...、森の木としてnはWN(各ツリーのノードが1つだけです)。
  2. 森2最小重量ツリーのルートノードを選択すると、左と右のサブツリー内の新しいツリーとしてマージ、およびツリーのルートは、その新しい左右の重量右のサブツリーのルート・ノードであります合計;
  3. 選択した2本の森から木、そして新しいフォレストツリーの追加を削除します。
  4. リピート(2)、(3)工程のみ森林木アップハフマン木により得られる木まで。

 

IVの概要

  1. ハフマンツリーはバイナリツリーの特別な種類です
  2. ツリーハフマン符号化及びデータ圧縮技術に適用されます
  3. ハフマン木は、近代的な圧縮アルゴリズムの基礎であります

私のマイクロチャネル公共数:アーキテクチャの聖書(ID:gentoo666)、共有Java乾燥、並行性の高いプログラミング、人気のある技術的なチュートリアル、および分散型マイクロサービス・テクノロジー、建築、デザイン、ブロック・チェーン・テクノロジー、人工知能、ビッグデータ、Javaのインタビュー質問だけでなく、最先端の情報とそんなに人気があります。ああ毎日更新!

参考文献:

  1. https://blog.csdn.net/lzjsqn/article/details/53141648

おすすめ

転載: www.cnblogs.com/anymk/p/11470518.html