哈夫曼编码效果最优的原因
来源:互联网 发布:linux怎么打开found 编辑:程序博客网 时间:2024/06/10 15:18
首先了解几个概念:
1.路径长度
在树中从一个结点到另一个结点所经历的分支构成了这两个结点间的路径上的分支数称为它的路径长度
2.树的路径长度
树的路径长度是从树根到树中每一结点的路径长度之和。在结点数目相同的二叉树中,完全二叉树的路径长度最短。
3.树的带权路径长度(Weighted Path Length of Tree,简记为WPL)
结点的权:在一些应用中,赋予树中结点的一个有某种意义的实数。
结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积。
树的带权路径长度(Weighted Path Length of Tree):定义为树中所有叶结点的带权路径长度之和,通常记为:
其中:
n表示叶子结点的数目
wi和li分别表示叶结点ki的权值和根到结点ki之间的路径长度。
树的带权路径长度亦称为树的代价。
三:用一个例子来理解一下以上概念
【例】给定4个叶子结点a,b,c和d,分别带权7,5,2和4。构造如下图所示的三棵二叉树(还有许多棵),它们的带权路径长度分别为:
(a)WPL=7*2+5*2+2*2+4*2=36
(b)WPL=7*3+5*3+2*1+4*2=46
(c)WPL=7*1+5*2+2*3+4*3=35
其中(c)树的WPL最小,可以验证,它就是哈夫曼树。因此哈夫曼树是最优二叉树。
当我们把权值定义为节点出现的概率,如a出现的概率是7/13,b是5/13,此时WPL=7/13*1+5/13*2+2/12*3+4/13*3 就是平均码长。这也就意味着哈夫曼编码的平均码长最小。因此效果最优。
- 哈夫曼编码效果最优的原因
- 证明哈夫曼编码是最优的
- 最优二叉树--哈夫曼树和最优前缀编码--哈夫曼编码
- 最优二叉树&&哈夫曼编码
- 哈夫曼编码树(最优编码树)
- 最优二叉树与哈夫曼编码
- 哈夫曼编码(最优前缀码)
- 最优二叉树之哈夫曼编码
- 最优二叉树---哈弗曼树及哈夫曼编码
- POJ1521---哈夫曼编码,求最优WPL
- 最优编码问题(哈夫曼编码)(贪心)
- 树的基本定义,二叉树,二叉排序树,森林,最优二叉树(哈夫曼树,哈夫曼编码)
- 0-1 背包问题、背包问题、最优装载问题、哈夫曼编码,这几个问题的思想是什么?
- notifyDataSetChanged()没效果的原因
- javascript最优编码方案
- 最优二叉树哈夫曼编码
- Prufer编码的最优算法的学习笔记
- 哈夫曼树(huffman)--最优二叉树的编码实现
- SSM框架基础配置
- Android属性动画的使用(上)
- Java中的String类
- 浅谈C++作用域运算符::
- ViewPager
- 哈夫曼编码效果最优的原因
- Kingdom Roadmap UVA
- Nexus3配合Gradle搭建私有仓库
- 第二章 变量和基本类型
- 手把手教你配置mac下最牛X的命令行工具:iTerm2+oh-my-zsh(2018年)
- 蓝桥杯 算法提高 分分钟的碎碎念
- 启明星第二周学习总结
- windows下如何安装和启动MySQL
- 接口自动化测试系列之PHPUnit介绍和环境搭建