You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
用途:用于数据传输过程中,将信息转换为二进制后进行**编排**,可以在一定程度上减少信息传输的大小。
|
|
|
|
|
定义:带权路径长度(WPL)最短的二叉树
|
|
|
|
|
### 一、基本概念
|
|
|
|
|
路径:从树中一个结点到另一个节点之间的分支构成这两个结点间的路径
|
|
|
|
|
路径长度:两结点间路径上的分支数
|
|
|
|
|
树的路径长度:从树根到每一个结点的路径长度之和
|
|
|
|
|
权:将树中结点赋给一个有某种含义的数值,则这个数值成为该结点的权
|
|
|
|
|
结点的带权路径长度:从根结点到该节点之间的路径长度与该节点的权的乘积
|
|
|
|
|
树的带权路径长度:树中所有叶子结点的带权路径长度之和。
|
|
|
|
|
|
|
|
|
|
树的带权路径长度越小可以认为性能越好
|
|
|
|
|
|
|
|
|
|
### 二、哈夫曼树的特点
|
|
|
|
|
|
|
|
|
|
+ 具有相同带权结点的哈夫曼树不唯一
|
|
|
|
|
+ 哈夫曼树中权值越大的叶子离根越近
|
|
|
|
|
|
|
|
|
|
![[微信截图_20221219105340.png]]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 三、如何构造哈夫曼树
|
|
|
|
|
口诀:
|
|
|
|
|
1. 构造森林全是根
|
|
|
|
|
2. 选用两小造新树
|
|
|
|
|
3. 删除两小添新人
|
|
|
|
|
4. 重复2、3剩单根
|
|
|
|
|
|
|
|
|
|
![[微信截图_20221219113815.png]]
|
|
|
|
|
|
|
|
|
|
### 四、哈夫曼树的应用
|
|
|
|
|
|
|
|
|
|
#### 1. 设计一个既能节省空间、有没有重码的编码
|
|
|
|
|
1.统计字符集中每个字符在电文中出现的平均概率(概率越大、要求编码越短)
|
|
|
|
|
2.将每个字符的概率值作为权值,构造哈夫曼树。(利用哈夫曼树的特点:权越大的叶子离根越近;概率越大的结点,路径越短)
|
|
|
|
|
3.在哈夫曼树的每个左分支标0、右分支标1,把从根到每个叶子结点路径上的标号连接起来,作为该叶子代表的字符编码,即哈夫曼编码。
|
|
|
|
|
|
|
|
|
|
![[微信截图_20221219121106.png]]
|