算法实验11

本文介绍了哈夫曼编码,一种用于数据压缩的高效编码方式。通过构建哈夫曼树,根据字符出现的频率来分配最短的二进制编码,使得频繁出现的字符编码更短,从而实现数据的高效压缩。哈夫曼算法通过自底向上合并权值最小的叶子节点来构建树,并保证了编码的前缀特性,避免了码字冲突。算法的时间复杂度为O(nlogn),适用于大量数据的压缩处理。
摘要由CSDN通过智能技术生成

最优前缀编码

1.问题

1
2

2.解析

构造最优前缀码的贪心算法就是哈夫曼算法(Huffman)
哈夫曼编码的基本思想是以字符的使用频率作为权构建一棵哈夫曼树,然后利用哈夫曼树对字符进行编码。
构造一棵哈夫曼树,是将所要编码的字符作为叶子结点,该字符在文件中的使用频率作为叶子结点的权值,以自底向上的方式,通过n-1次的“合并”运算后构造出的树。核心思想是让权值大的叶子离根最近。
哈夫曼算法采取的贪心策略是每次从树的集合中取出没有双亲且权值最小的两棵树作为左右子树,构造一棵新树,新树根节点的权值为其左右孩子结点权值之和,将新树插入到树的集合中。

3.设计

For i =1 to n-1{
	creat z 	//构造新父节点
	z.left = C中最小元x
	z.right = C中最小元y
	z.weight=x.weight+y.weight
	insert(T,z)	//将节点插入树T中
}
return T

4.分析

算法时间复杂度:
T(n)=O(nlogn)

5.源码

https://github.com/Adrianna-Yu/algorithm/blob/main/hfm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值