余结;王防修;胡迪;熊海梦;胡义
【摘 要】针对香农编码优化算法在编码效率方面存在的不足,提出一种基于信源符号码字重新分配而使平均码长变短的优化算法。新算法在原优化算法的基础上,通过判断优化码的码长是否随概率的递减而递增来决定该优化码是否需要进一步优化。鉴于改进算法只对优化码的码长不是随概率的递减而递增的情形才有效,首先设计一个优化码能否改进的判断算法,通过对优化码的判断,然后对能进一步优化的优化码用改进算法优化。改进算法用选择排序算法对优化码进行重新分配,使得分配后的码字满足码长随概率的递减而递增。算例仿真表明,对能进一步优化的优化码,改进算法可以进一步提高优化算法的编码效率。 【期刊名称】《武汉轻工大学学报》 【年(卷),期】2015(034)002 【总页数】4页(P83-86)
【关键词】香农编码;优化算法;编码效率;改进算法;选择排序 【作 者】余结;王防修;胡迪;熊海梦;胡义
【作者单位】武汉轻工大学数学与计算机学院,湖北武汉430023 【正文语种】中 文 【中图分类】TP391
在数据传输和存储过程中,为提高通信效率,有必要对数据信息进行压缩处理。作为一种重要的变长编码[1]技术,香农编码对此具有重要的理论指导意义。因此,
对香农编码的研究与实现一直是人们关注的热点[2-8]。虽然文献[9]对香农编码算法进行了优化,也一定程度上提高了香农编码的编码效率,但通过算法测试发现,经过该算法编码得到的码字有时会出现大概率符号对应长码字而小概率符号对应短码字的情况,使得该算法的平均码长还可以进一步缩短。为了进一步提高该优化算法的编码效率,本文提出了一种通过对码字进行升序排序和码字重新分配的方法对算法加以改进,使得用改进算法得到的编码总是大概率事件对应短码字而小概率事件对应长码字。算法仿真表明,与原优化算法相比,改进算法可以使信源符号的编码效率得到进一步提高。
设单信源X={x1,x2,…,xn},其中信源符号xi对应的概率为0 1)对n个信源符号xi的概率进行降序排列,即满足 p1≥p2≥…≥pn. 2)所有码字取相同的码长 ⎤. 4)将每个累加概率Pi转化为二进制数,取小数点后l位二进制数作为备用码字,即 Pi=Pi-1+pi-1,i=2,3,…,n. 和 . i=1,2,…,n和j=1,2,…,l,bi,j表示码字bi的第j位二进制数,bi满足 Pi=(0.bi…)2. 即bi是Pi的小数点后的l位二进制数。 5)对备用码字进行优化,使任意一个码字都不是其它码字的前缀[10-11],同时每个码字的码长尽可能短。 其优化过程如下: a.初始化码字指示器i=1; b.设置码字指示器j=1和k max=0; c.如果i≠j,则计算bi与bj的不同二进制位的位置,即 如果1≤k≤min{li,lj},s.t. bi(k-1)=bj(k-1). 和 bi,k≠bj,k. 其中bi(l)表示取码字bi的前l位,而bi,k表示码字bi的第k位二进制位,则k表示bi与bj互为前缀码的最小位置。 如果k>k max,则k max=k d.如果j 设概率为pi的信源符号xi经过优化编码后的码字为bi,其中概率pi满足式(2)。为了实现大概率符号对应短码字而小概率符号对应长码字,只需要对bi根据码长进行升序排序,使得最终获得 l(bi1)≤l(bi2)≤…≤l(bin). 然后,重新分配信源符号xj的码字为bij,j=1,2,…,n。 如果优化码bi的码长是li,i=1,,…,n,则有 ≤. 即改进码的平均码长一般要小于优化码,故改进码的编码效率一般要高于优化码。 不是任何优化码都能用改进的算法进一步优化,只有当优化码的码长不是单调递增时才行。即当p1≥p2≥…≥pn时,如果出现对应的优化码的码长满足 l1≤l2≤…≤ln,则该优化码就一定无法被改进算法优化;反之,如果∃i a.初始化。使i=1,表示i指示第一个码字的码长; b.如果li>li+1,则转至步骤d. c.如果i 所谓码字分配,就是指概率大的符号得到短码字而概率小的符号得到长码字。 因此,可以根据码长进行升序排序来实现码字的重新分配。这里不妨用选择排序算法对码字重新排序的过程描述如下: a.计算码字的码长li=len(bi),i=1,…,n. b.初始化码长指示器i=1; c.使h=i,表示h是需要竞争的位置; d.j=i+1,如果lj 这样,信源符号xi的概率越大,则其码长越短;反之,概率越小,码长越长。则由 ). 可知码字的平均码长越小,从而编码效率越高。 下面几个算例使用VC6.0作为仿真工具,在CPU为3.2 GHz和内存为1.86 GB的个人台式电脑上完成仿真。下面算例均要求用香农编码,优化编码和改进编码对信源符号进行编码。 算例1 现有12个信源符号,其概率分布如表1所示。 通过使用三种不同算法进行编码,可以得到如表2所示的编码结果。 由信源的熵公式 H(X)=-pilogpi. 和公式(13),可以求得编码效率为 . 因此,求得三种不同算法的编码效率如表3所示。 算例2 现有6个信源符号,其概率分布如表4所示。 通过使用三种不同算法进行编码,可以得到如表5所示的编码结果。 同样,求得三种不同算法的编码效率如表6所示。 算例3 表7是4个信源符号的编码结果。 根据编码效率的计算公式,可知香农编码的编码效率为η=0.769 350,而优化算法的编码效率为η=0.923 220。 对算例1和算例2的编码结果进行比较,可以看出本文算法较之香农编码优化算法而言,其编码效率有不同程度的提高。算例3由于码长是随概率的递减而递增,故优化码不能被进一步优化。其次,对不同个数的信源符号进行编码,编码效率也可能会有所不同。 由于本文提出的算法是香农编码优化算法的改进,它是在优化编码的基础上对优化码进一步优化,故它的编码效率一般要高于优化编码算法。 优化编码算法之所以编码效率要高于香农编码,是因为优化编码算法可以得到更短的平均码长。同样,如果优化编码算法得到的码长不是随概率递减而递增,则与优化算法相比,用改进算法进行编码又可以得到更短的平均码长。所以一般情况下,优化编码的编码效率要高于香农编码,而改进算法的编码效率又要优于优化编码。通过对改进算法的分析,可以得出如下结论。 1)本文所提算法的编码编码效率一般要高于优化编码; 2)只有当优化码的码长不是随概率递减而递增时,才考虑用改进算法对优化码进一步优化; 3)对不同个数的信源符号,改进算法对编码效率的提高会有所不同; 4)即使信源符号的个数相同,改进算法对编码效率的提高也可能会有不同。 【相关文献】 [1] 叶芝慧,沈克勤.信息论与编码[M].北京:电子工业出版社 ,2013. [2] 杨扬,申石磊.支持更新的XML编码方案[J].计算机工程与设计, 2012,33(4):1629-1632. [3] 谭鹏许,陈越. 基于广播加密的安全容错编码[J].计算机工程与设计, 2013,34(10):3417-3421. [4] 邢楠,朱虹. 一种快速判断非唯一可译码的方法[J].无线通信技术, 2008,31(2):29-31. [5] 刘忆宁.信息论教学中的程序设计[J]. 桂林电子科技大学学报,2008,28(4):338-341. [6] 郭姝,施滔滔.浅谈香农编码的JAVA实现及其效率分析[J]. 中国西部科技, 2009,8(27):44-46. [7] 张燕红 ,王燕.几种常用图像压缩编码方法的研究及C#实现[J]. 计算技术与自动化,2013, 32(3):60-63. [8] 张晓梅.常见离散信源编码方法的比较[J].福建电脑, 2009(5):64-66. [9] 邵军花 ,刘玉红.香农编码的优化算法研究[J].兰州交通大学学报,2010,29(6):110-113. [10] 谢勰.关于Shannon编码的若干注记[J].西安邮电学院学报, 2009,14(3):58-60. [11] 舒季君,沈传龙.d-L前缀码的完全化构造方法[J].杭州师范学院学报, 2008,7(1):24-28. 因篇幅问题不能全部显示,请点此查看更多更全内容