• 締切済み

ハフマン符号化の解き方

学校で「晴れ、曇り、雨の発生確率が0.125、0.75、 0.125のとき、ハフマン符号化したらどうなるか 答えよ。また、そのときの平均符号長とエントロ ピーについて述べよ。」という問題が出て解き方がわからないので教えてください。

みんなの回答

回答No.2

提出には間に合いましたか^^? 毎回質問サイトで回答を求めてばかりだといけませんよ? 自分の力でがんばりましょう!

参考URL:
http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text/error_control1.htm
全文を見る
すると、全ての回答が全文表示されます。
  • CMLT
  • ベストアンサー率40% (143/357)
回答No.1

解き方=そのまま解答見たいな感じなので丸投げみたいで回答すべきかとも思いましたが…、 確率順にくくっていくと 曇り0.75、晴れ0.125、雨0.125 曇り0.75、(晴れ雨)0.25 (曇り(晴れ雨))1 ハフマン符号は 曇り0、晴れ10、雨11 平均符号長は(1+2+2)/3=1.67 初耳でググッて5分ほど下記サイト他で読んでこの位までは素人にも出来るんだから少しは調べてもう少し具体的な質問をしましょうよ? エントロピーの方程式は他サイトでも見たけど具体的な計算方法調べるのはたるいのでパスします。て言うか計算せよではなくて述べよってあるんだから、ハフマンがどれだけエントロピー限界に近いかと平均符号長との関連性についてづらづら述べれば良いんでないですか?そもそもカテゴリここであってるのかな?

参考URL:
http://www.nurs.or.jp/~lionfan/ironna_21.html
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ハフマン符号化について

    ハフマン符号化についてですが、圧縮のためであるので、 ハフマン符号化を行いなさいといわれた場合において、 木構造の1と0の取り方はどんなものでも良いのでしょうか? 生起確率が A:0.12 B:0.12 C:0.28 D:0.48 であった場合、 添付画像の青い文字のように符号化を行い、 A:000 B:001 C:01 D:1 としても、赤い文字のように符号化を行い、 A:111 B:110 C:10 D:0 としても、どちらでもハフマン符号化としては正解なのでしょうか? また、0と1を階層ごとにランダムにとっても問題ないのでしょうか?

  • 情報理論でのハフマン符号・・・?

     学校で情報理論を習っていて、 ハフマン符号化のやり方は、習いました。  2元情報源を非等長でハフマン符号化は、 たとえば、0,1を確率0.8,0.2で発生する 記憶のない情報源sでは、確率の大きい0の ランレングスを利用すれば、2元情報源を ランレングスハフマン符号化すればできる らしいのですが、 4元情報源を非等長でハフマン符号化をす るのには、どうすれば分かりません。 2元と同じようにランレングスでできる らしいのですが・・・。  どなたかアドバイスお願いします。

  • ハフマン符号と平均語長の問題

    事象x1からx5までをハフマン符号で表し、平均語長をとると、 0.2×2+0.21×2+0.09×3+0.18×3+0.32×2=2.27なんですが、それぞれの項のかける数 2と3って何の数値ですか?

  • ハフマン符号のプログラム

     以下の問題に回答できる方,いらっしゃいましたらソースファイルと実行結果を送ってください。  ファァイル(記号列)を読み込んで,ハフマン符号によりファイルを圧縮するプログラム(C言語)を作成する(プログラムは,圧縮を行うものと,解凍を行うものの2つ作る)。また,いくつか適当なファイルに対して,圧縮を行い圧縮率を測定する。 (1)圧縮プログラムについて  圧縮のステップ  (a)入力ファイルを読み込み各記号の出現頻度をカウントする。  (b)得られた出現頻度を使って各符号のハフマン符号を生成する。  (c)各符号の出現頻度を出力ファイルに書き出す。  (d)もう一度入力ファイルを読み込みながら各符号をハフマン符号で置き換え    て出力ファイルに出力する。圧縮ファイルの形式は次のようになる。   0x00の  0x01の … 0xffの 先頭文字の 2文字目の … 終端文字の   出現頻度 出現頻度 出現頻度 符号語   符号語    符号語    (c)で書きこむ部分      (d)で書きこむ部分 (2)解凍プログラムについて  解凍のステップ  (a)各符号の出現頻度を圧縮ファイルから読み込む。  (b)得られた出現頻度を使って各符号のハフマン符号を生成する。  (c)圧縮ファイルの符号語を読み込みながら各符号のハフマン符号と比較しも    し一致したらその記号を解凍ファイルに出力する。  (d)(c)をファイルの終わりもしくは出現頻度をすべて足し合わせた記号数分処   理するまで繰り返す。  関数について  関数get_bit  ファイルから1bit読み込んで戻り値として返す。  (ファイルポインタはグローバル変数で用意する)  関数put_bit  引数として0,または1を渡すと1bitずつファイルに書き込む。  (ファイルポインタはグローバル変数で用意する)

  • ハフマン符号化プログラミング

     学校の課題でVisualStudioで実現できるハフマン符号化プログラム(3次拡大)を作成せよ。という課題が出題されました。  しかし私は今まで入門程度のプログラミングしかやったことがなく、。指定されたファイルの文字数を調べる程度の事しかできない程度のプログラミングの知識なのでさっぱりです。  指定されたtxtファイルを読み込んで、文字数を数えて、文字の種類を調べて、各文字の発生確率を調べて、各文字を3次拡大行列にし、ツリー構造のアルゴリズムを作成し、各値を2進数に変換して、2進数に変換したものをtxtファイルにして保存するということは何となくわかるのですが、それを実現する知識がありません。  プログラミングの知識をお持ちの方のご協力をお願いいたします。

  • ハフマン符号 情報源記号と符号語の対応表

    S=(a1 0.15 , a2 0.3 , a3 0.05 , a4 0.2 a5 0.25 , a6 0.05) この情報源Sに対するハフマン符号をハフマン符号の木を構成することにより、情報源記号と符号語の対応表を示せ。 という問題があるのですが、これについて質問です。 符号の木は、これらのa1~a6が二進数でどうなるのかがわからないと書けないと思うのですが、この問題にはその二進数の割り当てがしてありません。 これは最初からa1ならば0やa2ならば01という風に決まっていたり、また、勝手に割り当ててもいいのでしょうか? どなたかご教授お願いします。

  • 情報理論、ハフマン符号について

    こんにちは、 今年、技術士1次試験(電気電子部門)を受験する予定です。試験問題(専門科目)をざっと見たのですが、だいたい勉強すれば解けそうなものが多いのですが、中に「情報理論」「符号理論」「ハフマン符号」「符合の木」と呼ばれる全く馴染みのない問題が出題されていました。 全く知らないので初歩を勉強したいのですが、これらを初歩の初歩から解説した本等を教えてください。アマゾンで調べましたが、概要がすぐに解かる様な本はなかったです。 下記解説も、いきなり「エントロピー」が出てきて難解そうです。一応エントロピー(エネルギーの質が時間経過により悪化するもの)はボルツマンの熱力学第二法則として理解しておるつもりですが、なぜそのエントロピーが、情報や符号と関わりあうのか?何となく理解できそうで、理解できません。この理論は本気で取り組むと底が深そうなので、エントロピー無しの本が有難いです。ちなみに試験は10月です。 http://www.yobology.info/text/Huffman_code/Huffman_code.htm

  • ブロックハフマン符号化プログラムの作成

    現在学校の研究で「ブロック(n次拡大情報源)ハフマン符号化」プログラムをC言語で作成しています。 これは、通常のハフマン符号化でデータ1個ごとに出現頻度を調べてそれぞれにハフマン符号を割り当てるところを、ファイル中で隣り合うデータ2個(あるいは3個、4個、・・・n個)を一かたまりと見なし、それぞれの出現頻度を調べてハフマン符号を割り当てる、というものです。 通常のハフマン符号化は以前作成したことがあるのですが、これをどのようにして上記のようなプログラムに改変すればいいのかわかりません。 ちなみに、データのバッファリングは以下のようにし、 #define BUFFER_SIZE 102400 unsigned char buffer[BUFFER_SIZE]; (中略) int i,c; i = 0; while(i < BUFFER_SIZE && (c = fgetc(fp_i)) != EOF) { buffer[i] = c; i++; } 各データの出現頻度は以下のようにして調べています。 #define N 256 (中略) int hist[N * 2]; for(i = 0;i < (N * 2);i++) hist[i] = 0; for(i = 0;i < size;i++) hist[data[i]]++; ※data[i]は前述のbuffer[i]、sizeは前述のi(圧縮対象データのファイルサイズ)です。 やはり、バッファリングに使う配列をもう少しサイズの大きい型で宣言するとこから始めるべきでしょうか? ご教授お願いします。

  • ハフマン符号化の問題を解くプログラム

    ハフマンの符号化の問題を解くプログラムをC言語(コンソールアプリケーション)で作りたいのですが ファイルの圧縮とかをするプログラムはいろいろなサイトにあったのですが、 簡単な情報源を与えられたものを符号化するプログラムで参考にできるようなサイトは見つかりませんでした。 誰かプログラムの例を教えていただけないでしょうか? 入力する例はつぎのようなものです S=(a1, a2, a3, a4, a5, a6/0.35, 0.15, 0.15, 0.20, 0.10, 0.05)

  • 確率の問題です。解説をお願いします。

    はじめまして。 下記の問題の解説をお願いします。 --------------------------------------------------------  翌日の天候を決める処理を以下のように定義する。  ++++++++++++++++++++++++++++++++++++++++++++++++  A.「晴れ」の翌日は「晴れ」か「くもり」である。  B.「くもり」の翌日は「晴れ」か「くもり」か「雨」である。  C.「雨」の翌日は「くもり」か「雨」である。  晴れカード 12 枚、くもりカード 10 枚、雨カード 8 枚からなる 30 枚のカードがあり、  本日の天候から見て、翌日の天候にならないカードを全部抜いて、この束から無作為に 5 枚を引く。  引いたカードのうち最も多いものを翌日の天候とする。  最多のものが複数種類ある場合は、その中より等分の確率で再抽選する。  ++++++++++++++++++++++++++++++++++++++++++++++++ (いずれも計算過程を明示する事、有効数字は3桁とする) (1)現在の天気を「晴れ」とする。翌日の天気が「くもり」である確率を求めよ。 (2)現在の天気を「晴れ」とする。2日目の天気が「くもり」である確率を求めよ。 (3)現在の天気を「晴れ」とする。3日目の天気が「雨」である確率を求めよ。 (4)「晴れ」→「晴れ」の確率を求めよ。 (5)「晴れ」→「くもり」の確率を求めよ。 (6)「晴れ」→「雨」の確率を求めよ。 (7)「くもり」→「晴れ」の確率を求めよ。 (8)「くもり」→「くもり」の確率を求めよ。 (9)「くもり」→「雨」の確率を求めよ。 (10)「雨」→「晴れ」の確率を求めよ。 (11)「雨」→「くもり」の確率を求めよ。 (12)「雨」→「雨」の確率を求めよ。 (13)「晴れ」「くもり」「雨」の確率を、それぞれx,y,zとする。     x,y,zを使って翌日に「晴れ」「くもり」「雨」が出現する確率を記述せよ。 (14)これを無限回繰り返した時、「晴れ」「くもり」「雨」の出現する確率を求めよ。