赫夫曼树(最优二叉树),又称最优树,是一“类”(并不一定是一棵)带权路径长度最短的树.

本文介绍了如何通过赫夫曼树(最优二叉树)来构建带权路径长度最短的树,并通过一个实例展示了赫夫曼编码的建立过程。在解决特定字符概率分布的编码问题时,可能存在多种解决方案,但为了确保编码的一致性,通常需要规定构建顺序。赫夫曼树主要用于构造赫夫曼编码,是一种有效的数据压缩方法。

例:已知某系统在通信联络中只可能出现八种字符,其概率分别为
   0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11  试设计赫夫曼编码。

1.排序
   A      B      C      D   E      F      G      H
  0.03 , 0.05 , 0.07 , 0.08 , 0.11 , 0.14 , 0.23 , 0.29

2.      
<1>: 
               1.00
           0/        /1  
         0.58         0.42
        0/   /1     0/    /1
       0.29   H   0.19     G
      0/  /1    0/    /1
     0.15  F    D      E 
   0/    /1
  0.08    C
0/   /1
A     B 

WPL = A*5 + B*5 + C*4 + F*3 + H*2 + D*3 + E*3 + G*2 = 2.71
前缀编码:
 A:00000
 B:00001
 C:0001
 D:100
 E:101
 F:001
 G:11
 H:01
<2>:
   
                1.00
           0/          /1
          0.42         0.58
        0/   /1       0/    /1
       0.19   G     0.29      H
      0/   /1     0/    /1
   0.08     E   0.15      F
 0/  /1       0/    /1
A     B       C      D 
WPL = A*4 + B*4 + E*3 + G*2 + D*4 + C*4 + F*3 + H*2 = 2.71
前缀编码:
 A:0000
 B:0001
 C:1000
 D:1001
 E:001
 F:101
 G:01
 H:11

这题有两解了,出现这种情况的原因是:
出现两个相等的权和一个比这两个都小的权,这种情况下不能确定选择哪
个权和那个更小的权组合(比如:0.11,0.12,0.12).
所以,如果我们用手工去
求解,可能会得出很多种不同答案,它们的WPL值都一样,但形状不一,其
赫夫曼编码当然也相关甚大,这就给网络传输、编码、解码带来了很大的
难度,为了确保对于同一个问题无论在什么情况下得到的赫夫曼编码都是
一样的,这就会规定一定的顺序,具体怎么的,就不知道了...

赫夫曼树定义:假设有n个权值{w1,w2,...wn},试构造一棵有n个叶子结点的二叉树,
              每个叶子结点带权为wi,则其中带权路径长度WPL最小的二叉树称做
              最优二叉树或赫夫曼树。
赫夫曼树可以用于构造赫夫曼编程(前缀编码)。


结论:
赫夫曼树(最优二叉树),又称最优树,是一“类”(并不一定是一棵)带权路径长度最短的树。

PS:当然,赫夫曼树不一定要用赫夫曼算法构造,特例:1,2,3,4,5

http://bbs.csai.cn/bbs/view.Asp?Id=%7BD0E15691-E9E4-4194-BD86-A0332D19358D%7D

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值