首页 > 其他分享 >哈夫曼树

哈夫曼树

时间:2023-02-08 19:55:47浏览次数:35  
标签:geq log 哈夫曼 sum 元素 合并

感觉是一个平凡的结论,但是我想了一年怎么证!!!

结论:序列 \(a\) 生成的哈夫曼树,第 \(i\) 个元素的深度为 \(\mathcal{O}(\log\sum a_i-\log a_i+1)\)。

考虑哈夫曼树的生成过程:每次选取两个权值最小的结点合并。假设 \(x,y,z\) 为序列中最小的三个元素,那么与 \(x+y\) 合并的下一个元素 \(w\) 一定满足 \(w\geq z\),由于 \(x\leq y\leq z\),所以 \(w\geq z\geq\dfrac{x+y}{2}\),所以 \(x+y\) 与 \(w\) 合并之后,其所在的子树规模至少变为原来的 \(1.5\) 倍,加上第一次合并,元素 \(i\) 的合并次数不超过 \(\mathcal{O}(\log\sum a_i-\log a_i+1)\),证明完毕。

练习:分析 P7124 [Ynoi2008] stcm 的复杂度。

标签:geq,log,哈夫曼,sum,元素,合并
From: https://www.cnblogs.com/yllcm/p/17103111.html

相关文章

  • 6.6哈夫曼算法能够大幅提升压缩比率
    使用哈夫曼树后,出现频率越高的数据所占用的数据位数就越少而且数据的区分也可以很清晰地实现。通过图6-5的步骤2可以发现,在用枝条连接数据时,我们是从出现频率较低的数......
  • 6.6哈夫曼算法能够大幅提升压缩比率
    使用哈夫曼树后,出现频率越高的数据所占用的数据位数就越少,而且数据的区分也可以很清晰地实现。但哈夫曼算法为什么达到这么好的效果呢,大家都了解吗?通过图6-5的步骤2可以发......
  • 6.4通过莫尔斯编码来看哈夫曼算法的基础
    压缩技巧实际上有很多种。接下来,我们就来看一下本章要介绍的第二个压缩技巧,即哈夫曼算法。哈夫曼算法是哈夫曼(D.A.Huffman)于1952年提出来的压缩算法。日本人比较常用的......
  • 6.4通过莫尔斯编码来看哈夫曼算法的基础
    哈夫曼算法是1952年提出的压缩算法,日本人常用的压缩软件LHA使用的就是哈夫曼算法。文本文件是由不同类型的字符组合而成的,而且不同的字符出现的次数也是不同的。  注......
  • [数据结构] 哈夫曼树
    哈夫曼树哈夫曼树简介给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(HuffmanTree)。哈夫曼......
  • 哈夫曼树复习
    哈夫曼编码--最基本的压缩编码方法哈夫曼树,特殊的二叉树 哈夫曼树的定义与原理:WPL最小构造步骤1,先把有权值的叶子结点按照,从小到大的顺序排列成一个有序序列2,取头两......
  • 哈夫曼树哈夫曼编码
    输入一组整型权值,构建哈夫曼树,实现哈夫曼编码,并输出带权路径长度。输入格式:第一行输入叶子结点个数,接着依次输入权值。输出格式:输出哈夫曼编码,输出带权路径长度。代......
  • 哈夫曼树哈夫曼编码
    输入一组整型权值,构建哈夫曼树,实现哈夫曼编码,并输出带权路径长度。输入格式:第一行输入叶子结点个数,接着依次输入权值。输出格式:输出哈夫曼编码,输出带权路径长度。输......
  • 哈夫曼树课程实验报告--C++
    主要内容:  设计一个哈夫曼树,建立函数输入二叉树,并输出哈夫曼树。实现哈夫曼树的初始化并打印,进一步理解哈夫曼树的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际......
  • 通过权值建立构造哈夫曼树
    构造哈夫曼树步骤是,选择两个权值最小的点构造树,新树根权值为左右子树权值之和,新的权值放回到序列中,继续按照上述不走构造树,直到只有一颗树为止。权值排序一下:23568选......