韩顺平 数据结构与算法 (12_3) 树结构应用部分_赫夫曼编码(思路)

赫夫曼编码(思路)
1.基本介绍
  1. 赫夫曼编码也翻译为哈夫曼编码(Huffman Coding),又称赫夫曼编码,
  2. 赫夫曼编码是赫哈夫曼树在电讯通信中的经典的应用之一
  3. 赫夫曼编码广泛的用于数据文件压缩与解压。其**压缩率通常在20%~90%**之间
  4. 赫夫曼码是可变字长编码(VLC)的一种,Huffman于1952年提出一种编码方法,称之为最佳编码
2.赫夫曼编码图解与分析
  1. 通信领域中信息的处理方式1-定长编码:
    根据对应字符的Ascii编码对应的二进制来表示(长度很长)

  2. 通信领域中信息的处理方式2-变长编码:

    统计各个字符出现次数,按照各个字符出现的次数进行二进制编码(不稳定,会出现前缀错误的现象导致匹配不到目的字符)

  3. 通信领域中信息的处理方式3-赫夫曼编码:

示例:
    i like like like java do you like a java
//1共40个字符(包括空格)```
	d:1、y:1、u:1、j:2、v:2、o:2、l:4、k:4、e:4、i:5、a:5(空格):9 //各个字符对应的个数
//按照上面字符出现的次数构建一颗赫夫曼树, 次数作为权值.(图)

Ps:构建赫夫曼树参照上节
大体步骤如下:建节点引接口->建链表->先排序再建树

步骤:
在这里插入图片描述

注意!

​ 赫夫曼树根据排序方法不同,也可能不太一样,这样对应的赫夫曼编码也不完全一样,但是wpl是一样的,都是最小的

比如:如果我们让每次生成的新的二叉树总是排在权值相同的二叉树的最后一个,则生成的二叉树为:

在这里插入图片描述

这样以来,树不一样导致赫夫曼编码不一样但是编码的长度是一样的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值