コンピュータ, 情報技術
ハフマンコード:例、アプリケーション
現時点では、圧縮の仕組みについてはほとんど考えていません。 過去と比較して、パーソナルコンピュータを使用する方がはるかに簡単になりました。 実際、ファイルシステムを扱う人はすべてアーカイブを使用します。 しかし、彼らがどのように動作し、どのような原則がファイルの圧縮であるかを考える人はほとんどいません。 このプロセスの最初のバージョンは、ハフマンコードであり、さまざまな人気アーカイバで使用されています。 多くのユーザーはファイルを圧縮するのがどれくらい簡単か、それがどのような仕組みで動作するかは考えていません。 この記事では、圧縮の仕組み、エンコーディングプロセスの高速化と簡素化に役立つニュアンス、コーディングツリーを構築する原則について理解します。
アルゴリズムの歴史
電子情報の効率的なコーディングのための最初のアルゴリズムは、20世紀中ごろ、すなわち1952年にハフマンによって提案されたコードでした。 これは現在、情報を圧縮するために作成されたほとんどのプログラムの主な基本要素です。 現時点では、このコードを使用する最も一般的なソースの1つは、ZIP、ARJ、RARなどのアーカイブです。
効率的なコーディングの原則
ハフマンアルゴリズムの基礎は、最も可能性の高い最も一般的に遭遇するシンボルを バイナリ システムの コードで 置き換えることができる方式です。 あまり一般的でないものは、より長いコードに置き換えられます。 長いハフマンコードへの移行は、システムがすべての最小値を使用した後にのみ発生します。 この手法を使用すると、元のメッセージの文字ごとにコード全体の長さを最小限に抑えることができます。
ハフマンのコード、例
このアルゴリズムを説明するために、コードツリーを構築するためのグラフィカルな変形をしましょう。 このメソッドを使用するには効果的でしたが、このメソッドの概念に必要ないくつかの値の定義を明確にすることは意味があります。 ノードからノードに向けられたアークとノードのセットは、通常、グラフと呼ばれます。 ツリー自体は、特定のプロパティのセットを持つグラフです。
- 各ノードでは、1つのアークだけを入力できます。
- ノードの1つはツリーのルートでなければならず、つまり、そこにアークが存在してはならない。
- ルートからアークに沿って移動を開始する場合、このプロセスはノードのいずれかに完全に到達できるようにする必要があります。
ハフマンに従って木を構築するためのアルゴリズム
ハフマンコードの構成は入力アルファベットの文字から行われます。 将来のコードツリーで空いているノードのリストが作成されます。 このリスト内の各ノードの重みは、このノードに対応するメッセージの文字の出現確率と同じでなければなりません。 この場合、未来のツリーのいくつかのフリー・ノードの中で、最も重みの小さいフリー・ノードが選択されます。 同時に、最小指標がいくつかのノードで観測される場合、任意のペアを自由に選択することが可能です。
圧縮効率の向上
圧縮の効率を上げるためには、コードツリー構築時に、ツリーに添付された特定のファイルに出現する文字の確率に関するすべてのデータを使用し、多数のテキスト文書に散らばっていないようにする必要があります。 このファイルを最初に参照すると、オブジェクトから圧縮される文字の頻度の統計をすぐに計算できます。
圧縮プロセスの高速化
アルゴリズムの作業をスピードアップするためには、文字は、特定の文字の出現確率の指標ではなく、出現の頻度によって決定されなければならない。 これにより、アルゴリズムが簡単になり、処理が大幅に高速化されます。 これにより、浮動小数点や除算に関連する操作も回避されます。
結論
ハフマンのコードは、多くの有名なプログラムや企業で使用されているシンプルで長きに渡って確立されたアルゴリズムです。 そのシンプルさと明快さは、任意のボリュームのファイルの圧縮の効果的な結果を達成し、ストレージディスク上に占有されるスペースを大幅に削減することを可能にする。 換言すれば、ハフマンアルゴリズムは、長く研究され、よく設計されたスキームであり、その関連性は今日まで低下しない。
Similar articles
Trending Now