本文主要是对算法导论16.3节 赫尔夫曼编码相关证明的分析梳理;
另外,本文总结分析了贪心算法安全性证明的思路;
编写日期,2019/1/19,20日掌握算法导论day10
- 【证明之HuffMan算法构造的树是最优的证明】
- 遮住底部所有叶结点和内部结点,只剩下树X1(高度为1的两个根的儿子和根)。利用引理16.2证明X1是最优的,然后利用引理16.3将树X1的左二子展开得到树X2,可知树X2是最优的,继续展开树X1的右儿子。。然后继续展开。。一直展开下去。。最终证明HuffMan的树是最优的。
- [分析之HuffMan算法为什么是贪心选择】
- 我们可以从如下两个角度去证明他是贪心的
- 设定目标之求解最小内部联合频率的角度去做选择(提示习题16.3-4)
- 直接从16.4式角度出发,我们希望最小的值高度最小,因此贪心地将最小的值放在最底部,最大的值放在最高部。。
- 我们可以从如下两个角度去证明他是贪心的
- 【定理16.2~16.4之间的关系】
- 【引理16.2】证明贪心选择是安全的,而引理【16.3】证明了最优子结构从而使得我们贪心的选择可以将子问题缩小且子问题只有一个,并搭建尾递归算法。
- 【结构与性能关联分析】
- HuffMan编码的高效性决定于组成文件字符出现频率