第六周作業1 利用哈夫曼編碼字母表

2021-06-21 13:46:59 字數 1467 閱讀 3945

1. 哈夫曼編碼。對教材p167中習題5.18,思考並完成問題a-d。

(下表給出了英文本母(包括用於分割單詞的空格)在某文集中的出現頻率。

空格      18.3%    |   r        4.8%    |  y       1.6%

e         10.2%   |   d        3.5%   |  p        1.6%

t            7.7%   |   l         3.4%   |  b        1.3%

a           6.8%   |   c        2.6%   |  v        0.9%

o           5.9%   |   u        2.4%   |  k        0.6%

i            5.8%   |   m        2.1%   |  j        0.2%

n           5.5%   |   w        1.9%   |  x        0.2%

s           5.1%   |   f          1.8%   |  q        0.1%

h           4.9%   |   g         1.7%   |  z        0.1%

(a)這些字母的最優huffman編碼是什麼?

(b)每個字母的編碼平均需要多少位?

(c)假設我們對以上的頻率表計算其熵h=        .您認為該值會比以上的計算結果大還是小?為什麼?

(d)您是否認為這就是英文文字壓縮的下線?除了字母及其出現頻率,還有哪些英文本身的特徵需要在文字壓縮中被重點考慮?

字母最優編碼為

a:1000

b:100101

c:01110

d:11110

e:001

f:100100

g:100101

h:0101

j:1111111101

k:11111110

l:10011

m:111110

n:0000

o:1010

p:100111

q:1111111110

r:0110

s:0100

t:1110

u:01111

v:1111110

w:100101

x:1111111101

y:101100

z:1111111111

b字母編碼由計算得需要六位;

c結果比熵要大(約為5.7),因為在計算熵的時候允許有小數個位元,而實際上每個字元的編碼長度都必需為整數.

d我不認為;

除了字母及其出現的頻率,還可以重點考慮某些常見字母的組合。單詞的字首,字尾,等等.

第六周作業 哈夫曼編碼實現

cpp view plain copy include include include malloc的標頭檔案,也可以用malloc.h include using namespace std int num 26 存放個字母出現的次數 char str 50 typedef structhtnod...

第11周專案1 驗證演算法(4)哈夫曼編碼的演算法驗證

問題及 檔名稱 bigice.cbp 作 者 何大冰 完成日期 2016年11月10日 版 本 號 v1.0 問題描述 實現哈夫曼編碼的演算法驗證的演算法驗證,並測試資料。輸入描述 無 程式輸出 測試資料 include include define n 50 葉子結點數 define m 2 n ...

第11周專案1 驗證演算法(4)哈夫曼編碼的演算法驗證

問題及 檔名稱 作 者 路亞麗 完成日期 2016年 11月 21日 版 本 號 v1.0 問題描述 實現哈夫曼編碼的演算法驗證的演算法驗證,並測試資料。輸入描述 無 程式輸出 測試資料 include include define n 50 葉子結點數 define m 2 n 1 樹中結點總數 ...