huffman编码问题

mk30915438 2010-05-28 01:05:04
假设用于通信的电文由字符{a,b,c,d,e,f,g,h}构成,概率分别为{0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10}
1)为这八个字母设计HUFFMAN编码
2)若用三位二进制数(0-7)对这8个字母进行等长编码
则HUFFMAN编码的平均码长是等长编码的百分之几?
它使用的电文总长平均压缩多少?



由于是刚开始学HUFFMAN编码,上课的时候听的懂,可是解题步骤多
不知道详细的解题过程,所以请个位耐心点,多写一点,详尽一点
第一题一定,,第2题就看情况吧,,,不要发给我其他的教程啊,,,,
...全文
302 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
budweiser 2010-06-03
  • 打赏
  • 举报
回复
插入图片是 怎么弄的, 上面提示,只能通过网址来链接图片。。。。 有没有办法本地上传图片
luckystarxiaowu 2010-06-02
  • 打赏
  • 举报
回复
为什么两楼与三楼得出的a的编码是不一样的啊
哪个是正确的啊?
qingyun27sc 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 budtang 的回复:]

2 楼的太专业了。。。
[/Quote]

那个图是咋弄的呀

budweiser 2010-05-31
  • 打赏
  • 举报
回复
2 楼的太专业了。。。
ImJaden 2010-05-29
  • 打赏
  • 举报
回复
呵呵,楼上的很太厉害了。解释得太详细了
liuxiaobing2008 2010-05-29
  • 打赏
  • 举报
回复
楼上都正解
toplinq 2010-05-28
  • 打赏
  • 举报
回复
(1)哈夫曼编码

根据上图可得编码表:
   a:1001
   b:01
   c:10111
   d:1010
   e:11
   f:10110
   g:00
   h:1000

(2)用三位二进行数进行的等长编码平均长度为3,而根据哈夫曼树编码的平均码长为:
4*0.07+2*0.19+5*0.02+4*0.06+2*0.32+5*0.03+2*0.21+4*0.10=2.61
2.61/3=0.87=87%
其平均码长是等长码的87%。
所以平均压缩率为13%。
michael122 2010-05-28
  • 打赏
  • 举报
回复
1. huffman的原理懂吧? 每次拿概率最小的2个节点,构造新的节点,新节点的概率是2个节点的概率和,把新节点作为父节点,2个原始的作为子节点。 然后继续拿最小的2个。。。这样反复做,最后只剩下一个节点(根节点),同时也构造出一颗二叉树来。从根节点出发走到每个叶子节点,每一步往左就是一个0,往右就是一个1,这样走到一个叶子的时候同时也根据路径构造出一个01序列,这个序列就是该叶子的huffman编码
按你的例子,huffman编码如下:
a 0010
b 10
c 00000
d 0001
e 01
f 00001
g 11
h 0011

这个树lz自己画吧,应该很简单

2.huffman的平均码长:
4*0.07+2*0.19+5*0.02+4*0.06+2*0.32+5*0.03+2*0.21+4*0.10=2.61
你可以看到比定长的3要短一些 (87%)
本来用ascii码的话一个字符需要一个字节(8bit),现在平均一个字符2.61bit
压缩比 8:2.61=3左右

计算是否正确没检查,lz自己算一遍吧

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧