第三,每次缩减信源的最长的两个码字有相同的码长。
2)香农(Shannon)编码
香农第一定理指出了平均码长与信源之间的关系,同时还指出了可以通过编码使平均码长达到极限值。香农第一定理指出,可以选择每个码字的长度 满足关系式 ( =1,2,…, ),按上式选择的码长所构成的码称为香农码。由香农第一定理可知,这样选择得到的码长一定满足克拉夫特不等式,所以一定存在唯一可译码。然后按照这个码长 ,用树图法就可编出得到相应的一组码(即时码)。按照香农编码方法编出来的码,可以使其平均码长 不超过上界,即 ,只有当信源符号的概率分布呈现 ( 是正整数)形式时, 才能达到极限值 。一般情况下,香农编码的 不是最短的,即香农编码编出来的不是紧致码(最佳码)。
香农编码步骤如下:
① 将 个信源符号按概率递减的方式进行排列: ;
② 按码长计算公式计算出每个信源符号的码长 ;
③ 计算第 个信源符号的累加概率 : ;
④ 将累加概率 用二进制数表示;
⑤ 取 对应二进制数的小数点后 位构成该信源符号的二进制码字。
3)费诺编码
费诺编码是将信源符号以概率递减的次序排列,将排列好的信源符号划分为两大组,使第组的概率和近似相同,并各赋予一个二元码符号“0”和“1”。然后,将每一大组的信源符号再分成两组,使同一组的两个小组的概率和近似相同,并再分别赋予一个二元码符号。依次下去,直到每一个小组只剩下一个信源符号为止。这样,该信源符号所对应的码符号序列则为编得的码字。译码则是按照编码的二叉树,从树根开始,按译码序列进行逐个的向其叶子结点走,直到找到相应的信源符号为止。然后再把指示标记回调到树根,按照同样的方式进行下一序列的译码直到序列结束。
费诺编码步骤如下:源:自~优尔-·论`文'网·www.youerw.com/
① 将信源消息符号按其出现的概率大小依次排列。
② 将依次排列的信源符号按概率值分为两大组,使两个组的概率之和近似相同,并对各组赋予一个二进制码元“0”和“1”。
③ 将每一大组的信源符号再分为两组,使划分后的两个组的概率之和近似相同,并对各组赋予一个二进制符号“0”和“1”。
④ 如此重复,直至每个组只剩下一个信源符号为止。
⑤ 信源符号所对应的码字即为费诺码。
费诺编码的特点:
费诺编码得到的码要比香农码的平均码长小,消息传输速率快,编码效率高,但它属于概率匹配编码,而不是最佳的编码方法。
2.3 软件的开发环境
本课题利用C++来进行压缩编码及解压缩译码软件的设计,并应用VC++6.0可视化编程技术进行信源压缩编码及相应的译码程序设计。
利用C++的封装性,开发者只需要面对C++中的对象,可以更容易理解和操作各种窗口对象,使开发更接近开发语言而远离系统;利用C++的派生性开发者可以减少开发自定义窗口的时间和创造出可重用的代码;利用C++的虚拟性可以在必要时更好的控制窗口的活动。而且C++本身所具备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码。文献综述