




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本节将讨论:
树地路径长度哈夫曼树,哈夫曼算法与哈夫曼编码五.五哈夫曼树及其应用课堂提要第五章树五.一树五.二二叉树五.三树,森林与二叉树地关系五.四堆与优先权队列五.五哈夫曼树及应用一.扩充二叉树扩充二叉树(extendedbinarytree)也称二-树(二-tree),是指除叶子结点外,其余结点都需要有两个孩子地二叉树。五.五.一基本概念结点间地路径长度是指从树一个结点到另外一个结点地路径上所包括地边地数目。树地内路径长度定义为除叶子结点外,从根到树其它所有结点地路径长度之与。树地外路径长度是指从根到树所有叶子结点地路径长度之与。内路径I=零+一+一+二+三=七外路径E=二+二+二+三+四+四=一七定理五.一设I与E分别是一棵扩充二叉树地内路径长度与外路径长度,n是树非叶结点地数目,则E=I+二n。五.七.一树地路径长度证明对非叶结点个数n作归纳法证明。初始情况:令n=一,I=零,E=二,有E=零+二=二。归纳假设:非叶结点数为n-一时该等式成立。归纳步骤:设v是某个非叶结点,但其孩子是叶子,并且k为从根到v地路径长度。现从该二叉树上删除结点v地两个孩子,得到地新扩充二叉树上有n-一个非叶结点。新二叉树地内路径长度为I-k,外路径长度为E-二(k+一)+k。根据归纳假设,我们有E-k-二=I-k+二(n-一)因而有E=I+二n给予树结点一定地意义,并将结点赋予一定地量值,该量值称为结点地权。结点地带权路径长度如果叶子结点是带权地,则叶子结点地加权路径长度是从根到该叶子地路径长度与叶子地权地乘积。树地带权路径长度为树所有叶子结点地加权路径长度之与,记作其,m是叶子结点地个数,wk是第k个叶子结点地权,lk是该叶子结点地路径长度。WPL=(二×二+一×三+二×三+六×一)=一九WPL=(二×二+六×三+二×三+一×一)=二九一一五三一六二二一一一零八六一二二四个权值(一,二,二,六),构造只有四个叶子结点地二叉树:一般地,权越大地叶子离根越近,则二叉树地加权路径长度越小。哈夫曼给出了求具有最小加权路径长度二叉树地算法,称为哈夫曼算法。用哈夫曼算法构造地二叉树称为哈夫曼树。五.五.二哈夫曼树与哈夫曼算法哈夫曼算法可以描述如下:⑴用给定地一组权值{w一,w二,…,wn}生成一个森林F={T一,T二,…,Tn},其每棵二叉树Ti只有一个权值为wi地根结点,其左,右子树均为空。⑵从F选择两棵根结点权值最小地树作为新树根地左,右子树,新树根地权值是左,右子树根结点地权值之与。(约定左子树根权值小)⑶从F删除这两棵树,另将新二叉树加入F。⑷重复⑵与⑶,直到F只包含一棵树为止。此树即为哈夫曼树。构造哈夫曼树地例子⑴W={一,二,二,六}⑵W={三,五,九,一一,一二,一三}一一五三一六二二五三二三一二三零一一三五八九一三一七构造哈夫曼树地过程W={一,二,二,六}F=三一二二六构造哈夫曼树地过程W={一,二,二,六}F=一二三二六五构造哈夫曼树地过程W={一,二,二,六}F=六五三二一二一一再看一例:W={三,五,九,一一,一二,一三}一一一二一三三五九一一一二一三三五八九一七一一一二一三三五八九一三三五八九一七一一一二二三一一一二二三一三三五八九一七三零五三一一一二二三一三三五八九一七三零哈夫曼树本质上来看还是一种二叉树,可以采用前面介绍地二叉树地二叉链表存储表示。假设哈夫曼树有N个叶子结点,由于哈夫曼树不存在度为一地结点,则该哈夫曼树总有二N-一个结点。实际存储时可采用一维数组来实现,为了实现方便,数组地大小为二N,数组地零号存储单元不使用,一号至N号单元分别存储叶子结点,N+一号至二N-一号单元存储哈夫曼树形成过程地非叶子结点。哈夫曼树地结点结构用C语言实现如下:typedef{ElementTypeData;//结点地数据域intw;//结点地权值intparent,lchild,rchild;//结点地双亲,左孩子,右孩子}HFMTNode;程序五.八构造哈夫曼树地算法。voidCreateHFMTree(HFMTNodeHt[],intN){inti,j,k,lmin,rmin;//lmin与rmin为最小权值地两个结点位置intmin一,min二;//min一与min二为最小权值地两个结点for(i=一;i<二N;i++)Ht[i].parent=Ht[i].lchild=Ht.rchild[i]=-一;//初始化,各域地初值为-一for(i=N+一;i<二N;i++){min一=min二=MAX;//MAX为大于所有权值地一个值lmin=rmin=-一;for(k=一;k<=i-一;k++)if(Ht[k].parent==-一)//只在尚未构造二叉树地结点行
{if(Ht[k].w<min一){min二=min一;rmin=lmin;min一=Ht.[k].w;lmin=k;}
elseif(Ht[k].w<min二){min二=Ht.[k].w;rmin=k;}}
Ht[lmin].parent=i;Ht[rmin].parent=i;Ht[i].w=Ht.[lmin].w+Ht[rmin].w;Ht[i].lchild=lmin;Ht[i].rchild=rmin;}}一.等长编码
A:零零,B:零一,C:一零,D:一一.
电文:ABACABDA.编码:零零零一零零一零零零零一一一零零
译码:两位一个字符。ASCII编码是等长编码。二.不等长编码
A:零,B:零一,C:一零,D:一零一.
电文:ABACABDA.编码:零零一零一零零零一一零一零
译码:产生二义。原因:一个字符地编码是另一个字符编码地前缀。前缀编码:一个字符地编码不是另一个字符编码地前缀。五.五.三哈夫曼编码可以利用哈夫曼树得到前缀编码。
例:字符集S={A,B,C,D},权值W={四,二,一,一}
用权值构造哈夫曼树,约定左分支为零,右分支为一。八四四二二一一零一零零一一ABCDA:零B:一零C:一一零D:一一一三.哈夫曼编码电文:ABACABDA。编码:零一零零一一零零一零一一一零译码:ABACABDA用等长编码方案:
A:零零,B:零一,C:一零,D:一一.
电文:ABACABDA编码:零零零一零零一零零零零一一一零零用哈夫曼编码方案(不等长编码):电文:A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025办公室租赁合同范本参考
- 2025二手车买卖合同全国正式版
- 2025石油化工管道工程监理安全环保合同
- 2025室内涂料分包合同样本
- 《绿色生活由我启动》课件
- 2025医疗器械采购销售合同模板
- 电子银行承兑合同协议
- 电脑服务外包合同协议
- 电影股权转让合同协议
- 玉林农村建房合同协议
- DB33-1036-2021《公共建筑节能设计标准》
- 岩芯鉴定手册
- 快速排序算法高校试讲PPT
- 甘肃历史与甘肃文化
- 工程勘察设计收费标准
- 高边坡施工危险源辨识及分析
- SAP航空行业数字化转型解决方案(优秀方案集)
- 江苏工业企业较大以上风险目录
- 《村卫生室管理办法(试行)》课件(PPT 49页)
- 监理质量评估报告(主体分部)
- 锅炉爆炸事故演练方案(模板)
评论
0/150
提交评论