算法6--哈夫曼树.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

例题:已知某系统在通信联络中只可能出现8种字符,其概率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试设计huffman编码。***6.7哈夫曼树DavidHuffman问题提出:在数据通信中,用二进制给每个字符编码,如何使电文总长最短且不产生二义性?根据字符出现频率,利用Huffman树可以构造一种不等长的二进制编码,并且构造所得的Huffman编码是一种最优前缀编码,即使所传电文的总长度最短。任何一个字符的编码都不是同一字符集中另一个字符的编码的前缀。6.7.1Huffman树最优二叉树(Huffman)如何构造最优二叉树6.7.1Huffman树一、哈夫曼树(最优树)的定义结点的路径长度:从根结点到该结点的路径上分支的数目。树的路径长度:树中每个结点的路径长度之和。(结点)带权路径长度:结点的路径长度*结点的权=li*wi树的带权路径长度:树中所有叶结点的带权路径长度之和WPL(T)=设K={k1,k2,…kn},它们的权W={w1,w2,…,wn},构造以k1,k2,…kn为叶结点的二叉树,使得WPL=为最小,则称之为“最优二叉树”。哈夫曼树(最优树)的定义例W={1,2,4,6},可构造出如下的二叉树:124612466412WPL=(1+2+4+6)*2=26WPL=1+2*2+(4+6)*3=35WPL=6+4*2+(1+2)*3=23(1)(2)(3)根据定义求Huffman树的方法是:对给定的n个叶子结点(外部结点),构造出全部二叉树并求出其WPL,然后找出WPL最小的树。当n较大时,显然这种方法是不可取的。二、构造huffman树算法算法思想:1.根据权值{w1,w2,…,wn}构造n个二叉树F={T1,T2,…,Tn},其中Ti中是只含权值为wi的结点。2.从F中选两个权值最小的二叉树Ti和Tj,构造一个根结点R,R的权wR为wi+wj。3.从F中删除Ti和Tj,加入新的树R到F中。4.重复2,3直到F中只有一棵树(或执行n-1次)为止。例:已知权值W={5,6,3,9,7}56379673859例:已知权值W={5,6,3,9,7}563797613385917例:已知权值W={5,6,3,9,7}56379385917761330引例:百分制转换成五级分制成绩设实际学生成绩的分布规律如下:等级分数段比例ABCDE0~5960~6970~7980~8990~1005%15%40%30%10%有80%的数据需进行3次或3次以上比较才能得出结果。问题:如何设计程序才能使得比较的总次数最少?BEDCAW={5,15,40,30,10}a60a90a80a70EYNDYNCYNBYNA70?a80a60CYNBYNDYNEYNA80?a9060?a70输入10000个数据比较的总次数由31500次变为22000次。WPL=5x4+10x4+15x3+30x2+40x1=205以各个分数段上学生所占的百分比作为权值,构造一棵哈夫曼树:用n个叶结点构造出的最优二叉树共有几个结点?构造最优树时共执行n-1次循环,每次增加一个新结点,共增加了n-1个结点,所以结点总数一定是n+n-1=2n-1因为n0=n2+1,所以n2=n0-1,又由于在最优二叉树中没有度为1的结点,所以在最优二叉树中总的结点数为n+n-1=2n-16.7.2.Huffman编码(一)等长编码假设要发送的数据中可能出现的字符只有4个:A、B、C、D,则可用2位二进制数进行编码,如图:11100100DCBA若要发送的数据是:“ABCD”编码:怎样缩短电文的总长度?可缩短每个字符的编码。如:010010DCBA电文越短,则在相同条件下传输越快,出错的机率越小。译码出现“二义性”!若要发送的数据是:“

您可能关注的文档

文档评论(0)

金华 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档