09计科3班20094042142李凡.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
信源编码-哈夫曼编码 09计科3班 20094042142 李凡 信源编码是一种以提高通信有效性为目的而对信源符号进行的变换;为了减少或消除信源剩余度而进行的信源符号变换。最原始的信源编码就是另外还有ASCII码和电报码都是信源编码。但现代通信应用中常见的信源编码方式有:Huffman编码、算术编码、L-Z编码,这三种都是无损编码,另外还有一些有损的编码方式。信源编码的目标就是使信源减少冗余,更加有效、经济地传输,最常见的应用形式就是压缩。哈夫曼编码哈夫曼压缩是个无损的压缩算法,一般用来压缩文本和程序文件。哈夫曼压缩属于可变代码长度算法一族。意思是个体符号用一个特定长度的位序列替代。因此,在文件中出现频率高的符号,使用短的位序列,而那些很少出现的符号,则用较长的位序列利用进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。构造哈夫曼树非常简单,将所有的节点放到一个队列中,用一个节点替换两个频率最低的节点,新节点的频率就是这两个节点的频率之和。这样,新节点就是两个被替换节点的父节点了。如此循环,直到队列中只剩一个节点。{ int i,j,m1,m2,x1,x2; float a[10]; for(i=0;i2*n-1;i++) { HFMnode[i].probability=0; HFMnode[i].parent=-1; HFMnode[i].lchild=-1; HFMnode[i].rchild=-1; } for(i=0;in;i++) { couta[i]的概率=; cinHFMnode[i].probability; float Ia,Hp; Ia=-log10(a[i])/log10(2); Hp=a[i]*Ia; } for(i=0;in-1;i++) { m1=m2=maxvalue; x1=x2=0; for(j=0;jn+i;j++) { if(HFMnode[j].probabilitym1HFMnode[j].parent==-1) { m2=m1;x2=x1;m1=HFMnode[j].probability;x1=j; } else if(HFMnode[j].probabilitym2HFMnode[j].parent==-1) { m2=HFMnode[j].probability;x2=j; } } HFMnode[x1].parent=n+i; HFMnode[x2].parent=n+i; HFMnode[n+i].probability=HFMnode[x1].probability+HFMnode[x2].probability; HFMnode[n+i].lchild=x1; HFMnode[n+i].rchild=x2; } } 然后编写void main()函数 ,在这里我省略代码,其主要功能是对的码符号序列为、 编码效率、信源的符号数尽兴统计然后输出。以便于直观的显示实验结果。 实验部分结果: ------------------------ 信源符号数:5 a0的概率=0.2 a1的概率=0.3 a2的概率=0.3 a3的概率=0.1 a4的概率=0.1 编码效率:y=-1#INF ------------------------ 试验总结:哈夫曼的具体实现,在理解上或是实现上,都不是很困难,程序上实现哈夫曼的编码与译码,由于哈夫曼自身的特点,编码与译码均不是唯一,但是相同的编译码规则还是能实现正确的译码的。总的来说,通过本次实验,对哈夫曼的编译码有了一个更好的认识。通过本次试验,对书上的理论知识有了进一步的认识,但是由于对编程软件的知识欠缺,导致有很多地方还是搞不懂,只能向同学学习,讨论。当然最终还是有一定的欠缺。 对于哈夫曼编码的认识,是在以前的数据结构课程中就接触到的,但是当时只是知道哈夫曼树的编码而已。仅限于表面上的只是,并未曾想过用程序来实现它。所以对于此次试验并未有太大的帮助。学到了很多东西,相信对以后的学习会更有帮助的。

文档评论(0)

飞扬的岁月 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档