某段文本中各个字母出现的频率分别是{a:4,b:3,o:12,h:7,i:10},使用哈夫曼编码,则哪种是可能的编码:()
创建一个哈夫曼树,原则如下:
1. 将每个英文字母依照出现频率由小排到大,最小在左,组成一个序列;
3. 重复前面两步,直到序列中没有字母为止。
1. 给霍夫曼树的所有左链结'0'与右链结'1';
2. 从树根至树叶依序记录所有字母的编码。
构造哈夫曼树:
v = {b(3),a(4),h(7),i(10),o(12)}
取最小两个权值构成一棵树(如下)
--------(7)
---------/---\
-------/------\
-----b(3)---a(4)
然后将(7)加入序列:(7),h(7),i(10),o(12)
再取最小两个权值构成树:如下
-----------------(14)
--------------/--------\
------------/------------\
--------(7)---------h(7)
---------/---\
-------/------\
-----b(3)---a(4)
将(14)加入权值序列:(14),i(10),o(12)现在取10跟12构成一颗新数:如下
----------------(14)------------------(22)
--------------/--------\----------------/-----\
------------/------------\ -----------/----------\
--------(7)---------h(7) ---i(10)--------o(12)
---------/---\
-------/------\
-----b(3)---a(4)
最好权值相加:--------------------------(36)
--------------------/-----------------\
------------------/---------------------\
----------------(14)------------------(22)
--------------/--------\----------------/-----\
------------/------------\ -----------/----------\
--------(7)---------h(7) ---i(10)--------o(12)
---------/---\
-------/------\
-----b(3)---a(4)
现在执行哈夫曼编码:从第二个接点开始:
进行编码:
1. 给霍夫曼树的所有左链结'0'与右链结'1'
2. 从树根至树叶依序记录所有字母的编码
--------------------------(36)
--------------------/-----------------\
------------------/---------------------\
----------------0(14)------------------1(22)
--------------/--------\----------------/-----\
------------/------------\ -----------/----------\
--------0(7)---------1h(7) ---0i(10)--------1o(12)
---------/---\
-------/------\
-----0b(3)---1a(4)
结果:a:001,b:000,h:01,i:10,o:11
答案:A