- 締切済み
Huffmannのプログラム
Huffman法のプログラムをC言語で作成する上で、Huffman木の作成と符号化のところがなかなか出来なくて困っています。 英文を読み込んで、各文字の出現回数を数えて、というところまではいけるのですが… 教えていただけませんか?(特にHuffman木を作るところ) Huffman法の仕組みは分かるのですが…
- masao50220
- お礼率0% (0/6)
- 情報工学
- 回答数2
- ありがとう数10
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- Huffman木の作成の問題
Huffman法のプログラムを作成する上で、Huffman木の作成と符号化のところがなかなか出来なくて困っています。 英文を読み込んで、各文字の出現回数を数えて、というところまではいけるのですが… 教えていただけませんか?
- 締切済み
- 情報工学
- ハフマン符号のプログラム
以下の問題に回答できる方,いらっしゃいましたらソースファイルと実行結果を送ってください。 ファァイル(記号列)を読み込んで,ハフマン符号によりファイルを圧縮するプログラム(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ずつファイルに書き込む。 (ファイルポインタはグローバル変数で用意する)
- ベストアンサー
- C・C++・C#
- 2元ハフマン符号化プログラムが作れなくて困っています。
以下のC言語のプログラムを作成出来る方、いらっしゃいましたらソースファイルを載せて下さい。 2元ハフマン符号化プログラム:具体的な無記憶情報源が入力されたときに、そのハフマン記号を出力される ご教授よろしくおねがいします
- 締切済み
- C・C++・C#
- ブロックハフマン符号化プログラムの作成
現在学校の研究で「ブロック(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・C++・C#
- VB2008 ハフマン符号のプログラム
ハフマン符号のプログラムソースを探しています! http://www.ccad.sist.chukyo-u.ac.jp/~mito/syllabi/daisu/huffman/index.htm#TOP に、Visual C++で作成されたプログラムがあります。 これを、VB2008に書きかえることのできる方いらっしゃいませんか? 符号化と複合化を別に(コントロールのボタンを用いて「符号化」、「複合化」とできるなど)していただければありがたいです。 ぜひ、よろしくお願いします!!
- 締切済み
- Visual Basic
- ハフマン符号化について
ハフマン符号化についてですが、圧縮のためであるので、 ハフマン符号化を行いなさいといわれた場合において、 木構造の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を階層ごとにランダムにとっても問題ないのでしょうか?
- 締切済み
- その他(ITシステム運用・管理)
- ハフマン符号化の問題を解くプログラム
ハフマンの符号化の問題を解くプログラムをC言語(コンソールアプリケーション)で作りたいのですが ファイルの圧縮とかをするプログラムはいろいろなサイトにあったのですが、 簡単な情報源を与えられたものを符号化するプログラムで参考にできるようなサイトは見つかりませんでした。 誰かプログラムの例を教えていただけないでしょうか? 入力する例はつぎのようなものです S=(a1, a2, a3, a4, a5, a6/0.35, 0.15, 0.15, 0.20, 0.10, 0.05)
- ベストアンサー
- C・C++・C#
- C言語でプログラムを作成したいのですが・・・
C言語でプログラムを作成したいのですが・・・ 急ぎです!!!どなたかお教えください 情報処理の授業のレポート課題です 内容は次のようなものです 傾向の分析 ・入力された英文中の、アルファベットの並びについて分析する、以下のようなプログラムを作る ・大文字/小文字は無視して(どちらかに揃えて)考える ・アルファベットの並びで考えて 前 → 後 の順の並びか、後→前の順の並びかを判定し、それぞれの個数を数え、最終的にどちらが多かったかを表示 ・最も出現する回数の多かった、2文字の並びを表示する ・スペースとピリオドは無視する 例: This is a pen. ・thisisapen と考える ・th:後→前, hi: 前→後, is:前→後 ... ・前→後: 5回, 後→前:4 回 なので前→後の方が多い ・一番多く出現している並びは is お願いします
- 締切済み
- C・C++・C#
- C言語のプログラムを作成して下さい。
C言語で以下のような機能を持つプログラムを作成してください。 3つの文章X.txt,Y.txt,Z.txtでY,ZのうちどちらがXに近いか判定するプログラム。X.txtを読み込んでXに出現する単語からなる単語の木を作成する。次にY,Zを読み込み単語の木と単語の出現頻度をもとにXとY、XとZの類似度を測るための統計的データを計算する。そしてY,ZのどちらがXに近いか、とその根拠となる統計データを出力する。
- ベストアンサー
- C・C++・C#