- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
------------------------
试验总结:哈夫曼的具体实现,在理解上或是实现上,都不是很困难,程序上实现哈夫曼的编码与译码,由于哈夫曼自身的特点,编码与译码均不是唯一,但是相同的编译码规则还是能实现正确的译码的。总的来说,通过本次实验,对哈夫曼的编译码有了一个更好的认识。通过本次试验,对书上的理论知识有了进一步的认识,但是由于对编程软件的知识欠缺,导致有很多地方还是搞不懂,只能向同学学习,讨论。当然最终还是有一定的欠缺。
对于哈夫曼编码的认识,是在以前的数据结构课程中就接触到的,但是当时只是知道哈夫曼树的编码而已。仅限于表面上的只是,并未曾想过用程序来实现它。所以对于此次试验并未有太大的帮助。学到了很多东西,相信对以后的学习会更有帮助的。
您可能关注的文档
最近下载
- 中外建筑史幻灯片.ppt VIP
- 河北高速公路集团有限公司招聘笔试题库2024.pdf
- 《景观规划设计》课件——乡村景观园林庭院设计.pptx VIP
- 风力发电设备加工项目投资计划书(参考).docx
- 人教版高中地理必修第一册第一章:宇宙中的地球大单元整体教学设计2024.docx
- 工程造价软件应用 课件 第2章 广联达BIM土建计量平台应用.pptx
- 特色校本教材——魔幻数学(一年级).docx VIP
- 2025一建《建筑工程管理与实务》考前6套模拟卷.docx VIP
- 工程勘察服务成本要素信息(2022版).pdf VIP
- 2024年秋季学期新人教版七年级上册英语课件 Unit 1 You and Me (第4课时) Section B 1a-1d.pptx VIP
文档评论(0)