算法201404-贪心资料.pptVIP

  • 16
  • 0
  • 约2.24万字
  • 约 100页
  • 2016-08-21 发布于湖北
  • 举报
* 最优子结构性质 设T是表示C的一个最优前缀码的完全二叉树, C中字符c的频率为f(c)。设x,y是T中两个叶子结点且为兄弟,z为它们的父结点。若将z看作是具有频率f(x)+f(y)的字符,则树T’=T-{x,y}表示字符集C’=C-{x,y}+{z}的一个最优前缀码。 证明: 首先T的平均码长B(T)可用T’的平均码长B(T’)表示。 * 若T’表示的C’的前缀码不是最优的,则存在T’’表示的C’的最优前缀码,B(T’’)B(T’). z作为C’ 中的一个字符,故z作为T’’中的一个叶子,若将x,y加入T’’中,作为z的儿子结点,得到表示C的前缀码的二叉树T’’’, 与T最优矛盾 T’表示的C’的前缀码是最优的 满足最优子结构性质 * 哈夫曼编码的实现 教材上给出的算法huffmanTree中,编码字符集中每一字符c的频率是f(c)。以f为键值的优先队列Q用在贪心选择时有效地确定算法当前要合并的2棵具有最小频率的树。一旦2棵具有最小频率的树合并后,产生一棵新的树,其频率为合并的2棵树的频率之和,并将新树插入优先队列Q。经过n-1次的合并后,优先队列中只剩下一棵树,即所要求的树T。 算法huffmanTree用最小堆实现优先队列Q。初始化优先队列需要O(n)计算时间,由于最小堆的removeMin和put运算均需O(logn)时间,n-1次的合并总共需要O(nlogn)计算时间

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档