哈夫曼編碼 :: 如何求出一串字符集各個字符對應的哈夫曼編碼

只要會構造哈夫曼樹,哈夫曼編碼特別簡單,一眼就能看出來。方法如下:

首先看下面題目

已知字符集{ a, b, c, d, e, f },若各字符出現的次數分別爲{ 6, 3, 8, 2, 10, 4 },則對應字符集中各字符的哈夫曼編碼可能是:

A,00, 1011, 01, 1010, 11, 100

B,00, 100, 110, 000, 0010, 01

C,10, 1011, 11, 0011, 00, 010

D,0011, 10, 11, 0010, 01, 000

答案:A

解題步驟

一,先將這串數字構造爲哈夫曼樹

其實題目中,前半部分的字母已經不用看了,因爲構造哈夫曼樹正常是比大小,而這裏比較出現次數大小。

排序爲2,3,4,6,8,10

哈夫曼樹爲

二,將每個結點左右子樹設爲0,1,如下

三,將從頭結點到此結點數合起來即爲哈夫曼編碼

此時可以得到題目中幾個次數的字符集,即爲對應字符的哈夫曼編碼

  • 2->1010
  • 3->1011
  • 4->100
  • 6->00
  • 8->01
  • 10->11

所以各字符出現的次數分別爲{ 6, 3, 8, 2, 10, 4 },則對應字符集中各字符的哈夫曼編碼可能是:00, 1011, 01, 1010, 11, 100

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章