哈夫曼树及哈夫曼编码详解

一、预备知识

• 结点的路径长度:从根结点到该结点的路径上所包括的边的数目;
在这里插入图片描述
• 树的内路径长度:除叶结点外,从根到树中其他所有结点的路径长度之和;
在这里插入图片描述
• 树的外路径长度:从根结点到树中所有叶子结点的路径长度之和;
在这里插入图片描述
• 扩充二叉树:除叶子结点外,其余结点都必须有两个孩子,也称为2-树;
在这里插入图片描述
• 定理:一颗扩充二叉树的内路径长度和外路径长度分别记为I和E,n为非叶结点个数,则有E=I+2n;
• 叶结点的加权路径长度:设叶结点是带权的,则叶结点的加权路径长度是其路径长度与权值的乘积。
• 树的加权路径长度:所有叶结点的加权路径长度之和,记为WPL;
在这里插入图片描述
在这里插入图片描述
• 加权路径长度WPL的内涵(结合字符编码应用场景)
✓ 每一个叶结点表示一个字符;
✓ 叶结点权值表示对应字符在文本中的出现频度;
✓ 叶结点的路径长度表示对应字符的编码长度;
哈夫曼树就是一种具有最小加权路径长度的扩充二叉树。

二、哈夫曼树与哈夫曼算法

• 哈夫曼算法:求具有最小加权路径长度二叉树的算法
• 哈夫曼树:用哈夫曼算法构造生成的二叉树
✓ 哈夫曼树是一棵扩充二叉树
✓ 哈夫曼树中任一非叶节点的权值等于其左右孩子的权值之和;
✓ 对于叶节点相同二叉树而言,哈夫曼树的加权路径长度是最小的;
在这里插入图片描述

哈夫曼编码

• 压缩编码的原则
无二义性,即编/解码的双向唯一性;
压缩率和编/解码效率的平衡;
• 前缀编码:一个字符的编码不是另一个字符编码的前缀
• 利用哈夫曼树构造哈夫曼编码
已知文本的字符集S,以及对应的权值集合W,权值表示对应字符的频度,执行如下步骤

  1. 根据W构造哈夫曼树,叶结点权值代表对应的字符;
  2. 按照左孩子分支标记编码0,右孩子分支标记编码1的原则(左0右1),为哈夫曼树中的分支标记0/1编码;
  3. 叶子节点对应字符的编码,即为从根结点到该叶子节点的路径中,经过各孩子分支所形成的0/1编码序列。
    在这里插入图片描述
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值