メルマガ:ほぼ日刊エロリチェック・メール版
タイトル:圧縮の基礎:ハフマン符号木 【ほぼ日刊エロリチェック】  2009/02/26


ほぼ日刊エロリチェック・メール版ヌ







悔しがる中江でございます。







■圧縮の基礎:ハフマン符号木





無性に書きたくなったので
今日はハフマン符号木の話。




ファイルの圧縮の基礎義仲です。




今、ひそかにやってることと
ちょっと関係がある。




けど教えない。
だって俺はいじわるだからさ!!!
















ファイルサイズの節約は昔から好まれていました。




だって、ハードディスクどころか
フロッピーですら、一枚ウン千円してたりしましたから。




すぐれた圧縮技術 → ものすごい経費節約




だったわけです。
今は昔ほどではないかもだけど。




いやそうでもないか。
ネットワーク越しのやりとりは圧縮がないときつい。




















では具体的な話にいきますね。
うっふ〜ん




ファイルの中身を調べて、
でてくる言葉の出現率を調べます。




たとえば




第一位 nakaechinpowooshaburi time ga machidooshiirorikkoatsumare! 30 回
第二位 ootto,sumoutoridomogamotsureaida! 20 回
第三位 konnashoujoga,midaranakakkouwo! 10 回




みたいな出現率だったとします。
ここで、一番出現率が高いものを短くします。




具体的には、出現率が高いフレーズを、
単純なビットで表すのです。




そうですね、
こんな例はどうでしょかね。




nakaechinpowooshaburi time ga machidooshiirorikkoatsumare! → 0
ootto,sumoutoridomogamotsureaida! → 10
konnashoujoga,midaranakakkouwo! → 110




このムダに長い、58 バイト(多分)あるフレーズを
たった、0 という 1 ビットで表すことにします。




同様に、第二位のものを 10、
第三位のものを 110、とします。




第一位のフレーズは 30 回出てきてるので
単純計算で、58 x 30 - 1 x 30 / 8 = 1735.75 バイトの節約になります。




第二位や、第三位も同じようにして
単なるビットに変えていきます。




こうするとあらら不思議。
すんごい数の節約になっちゃいました。




















解凍するときはこれと逆。




0 というビットを見つけたら第一位のフレーズに、
10 というのを見つけたら第二位のフレーズに変えていけばいいです。





















一番出現率の高いフレーズを 0 というたった 1 ビットで表すのは
やっぱ、一番でるものは短い方が圧縮効率がいいから。




フレーズごとにビットの長さが違うのは
ビットの長さが同じだと非効率なのさ。




だって、出現率がすんごく違うフレーズに
同じ長さのビット割り当ててたら、なんか悲しいでしょ?




上に書いた例だと、全部で 70 ビットだけど
それぞれに 2 ビット割り当てたら 120 ビット必要になるし。




















ほとんどの圧縮アルゴリズムの基礎なお話でした。




実際使われてる圧縮プログラムはこれを応用して
すんごく効率がいい方法をとってたり




はたまた、まったく別の方法を使ってたりと
色々深く、ディープにやっているようです。
















それと、同じフレーズがよく出るファイルを圧縮すると
かなり圧縮できるのは、こういう仕組みを使ってるから。




出現率が高いフレーズがあるファイルだと
ナイスに圧縮できちゃうのです。





■編集後記 I・N・G



ひなちゃ〜んのマンコに今日も中出ししたぜ!!

http://eloli.info/2009/02/post_273.html



もう5回目だけど、まだオールクリアできねえ!
くそう!精液もう残ってないぞ!!






このメルマガは MailuX より発行されています。
登録解除は  http://eloli.info/
関連サイトも http://eloli.info/
発行者は   中江出汁太郎
連絡は    nakae@eloli.info

ブラウザの閉じるボタンで閉じてください。