一、题目分析
对于给定的信源的概率分布,按照香农编码的方法进行计算机实现
二、算法分析
2.1、算法基本原理
给定某个信源符号的概率分布,通过以下的步骤进行香农编码:
1)信源符号从小到大排列:
2)对信源符号求累加和,表达式:Pi=Pi-1+p(xi)
3)求自信息量,确定码字长度。自信息量I(xi)=-log(p(xi));码字长度取大于等于自信息量的最小整数:
4)将累加和用二进制表示,并取小数点后码字的长度的码。
简明流程图:
2.2、主要函数设计及分析
1)paixu()函数
本函数的功能主要是对用户输入的各个符号对应的概率进行降序排列,以便于计算累加概率和编码。
2)length()函数
本函数的功能主要是求每个符号概率对应码字的长度。
3) mazi()函数
本函数的功能主要是将累加概率转换为二进制,从而根据码长计算出相应的码字,在这里用到对浮点数转换为二进制的算法。
三、测试结果
测试数据为;0.20 0.19 0.17 0.15 0.10 0.01 0.18
四、分析与探讨
只是在对概率取对数并向上取整时遇到一定的困难,经过思考,利用上述的模拟手工出发圆满的解决了这一难题,使得程序能够得以完成。
五、源代码
小组成员:李宏伟(P02114192)董文博(P02114214)薛一洋(P02114228)舒雨欣(X92114046)戴宏杰(P02114203)陈建宇(P02114240)