首页 > 编程知识 正文

香农编码效率可以大于1吗(香农编码唯一吗)

时间:2023-05-05 16:25:59 阅读:73187 作者:4882

http://www.Sina.com/http://www.Sina.com /

香农码使用源代码符号的累计概率分布函数分配代码。 香农码是根据香农第一定理直接得到的,指出平均码长与信息之间的关系,也指出编码可以使平均码长达到极限值。 香农的第一个原因是将原始源符号转换成新的代码符号,从而使码符号尽可能遵循均匀的概念分布,从而使每一代码符号所拥有的信息量最大化,以尽可能少的代码符号来传输源信息

香农码是不等长码,通过将经常出现的消息变成短码,将不频繁出现的消息变成长码,提高通信效率。 香农编码严格地说不是最佳编码,而是利用源代码的累积概率分布函数分配码字。

编码步骤如下:

)1)按概率从高到低的顺序排列源符号。 为了方便

按)2)

计算与第I个符号对应码字的码长;

)3)计算第I个符号的累积概率

(4)将累积概率转换为二进制小数,小数点后的位数作为第I个代码的码字。

香农编码效率不高,实用性较低,但对其他编码方法有较好的理论指导意义。 一般来说,用香农编码方法编写的代码平均代码长度不是最短的。 也就是说,不是紧凑代码(最佳代码)。 只有在源符号的概率分布使不等式左边的等号成立的情况下,编码效率才最高

示例1以下源代码:

该香农码如表所示,

以i=4为例,因此。 概率为二进制数,为0.1001…。 变换方法为,Pi乘以2,整数部分有进位时,小数点以下第一位为1,否则为0,对该小数部分进一步进行同样的处理,得到小数点以下第二位。 这样,直到得到满足要求的位数,或者小数部分消失为止。 可知编码获得的码字是即时码,也是唯一可解码的,因为没有相同的码字,它是非奇异码,也没有码字是其他码字的前缀。 http://www.Sina.com/(0. 20.190.180.170.15 ) x3 0.1x4 0.01x7=3.14

特点:

香农编码效率不高,实用性较低,但对其他编码方法有较好的理论指导意义。 通常,基于香农编码方法生成的编码表的平均编码长度不是最短的,即紧凑编码表(最佳编码表)。 只有在源符号的概率分布使不等式左边的等号成立时,编码效率才最高。

**

二、哈夫曼符号** 一、香农编码

霍夫曼编码(Huffman Coding )也称为jzdls编码,是一种编码方案,其中霍夫曼编码是可变长度编码(VLC )的一种。 1952年,Huffman提出了一种完全基于字符出现概率来构造异字头平均长度最短码字的编码方法。 有时也称为优化编码,一般称为Huffman编码。 也称为jzdls编码。

概念:

1 )按从小到大的顺序排列源符号概率。

2 )将两个最小的概率相加,继续这个步骤,总是把较高的概率分支放在右边,直到最后达到概率1。

3 )绘制从概率1到每个源符号的路径,然后沿着路径依次记录0和1,即该符号的jzdls码字。

4 )每对左边的一个指定为0,右边的一个指定为1 (或反之)。

示例1以下源代码:

在以上步骤中获得的代码为http://www.Sina.com/: 0.2x 20.19 x 20.18 x 30.17 x 30.15 x 30.1 x 40.01 x4=2.72

特长

Huffman代码有以下三个特征:

Huffman码的编码方法确保高概率编码对应于短码,小概率编码对应于长码,并且短码被充分利用。 每次折叠源的最后两个码字时,最后一个位符号总是不同,前一个位符号相同(对于二进制代码)。 每次缩小源时,最长两个码字具有相同的代码长度。

这三个特征确保了得到的Huffman代码是最佳代码。 三、苯码平均码长为:

949年费诺(R.M. Fano )提出了一种称为费诺码或Fano码的编码方法。 它是概率一致编码,但通常不是最佳的编码方法,而是在源的概率分布呈现分布形式的条件下,才能实现最佳编码性能。

概念:

1 )按概率递减排列r个源符号。

2 )将排列的源符号按概率值分成两个大组,使每一组概率之和相等,每一组给出二维码符号0和1。

3 )将每个较大组的信源符号进一步分为两组,使得所划分的两组概率之和相等,并分别给出0和1的二维码符号。

4 )每组依次下行,直到只剩下一个源符号。

5 )对在逐步分组过程中获得的符号进行排序就是对每个源符号的编码。

示例1以下源代码:

从左向右,所有符号都是以它们出现的概率(次数)来区分的。 在S3和S4之间画分割线,得到合计频率分别为0.57、0.43左右两组。

这样可以使两组的差距最小化。 通过这样分割,S1、S2和S3具有同时从0开始的码字,S4、S5、S6、S7的符号变为1,然后在树的左半部分建立在S1、S2、S3之间

立新的分割线,S1为一组,S2,S3为一组这样S1就成为了码字为00的叶子节点,S2,S3的开头为01;然后S2,S3间再分组得到S2的编码为010,S3的编码为011.以此类推最后得到编码为下图:

**平均码长为:0.2x2+0.19x3+0.18x3+0.17x2+0.15x3+0.1x4+0.01x4= 2.74

Fano码具有以下性质:
1)Fano码的编码方法实际上是一种构造码树的方法,所以Fano码是即时码。
2)Fano码考虑了信源的统计特性,使概率大的信源符号能对应码长较短的码字,从而有效地提高了编码效率。
3)Fano码不一定是最佳码。因为Fano编码方法不一定能使短码得到充分利用。当信源符号较多时,若有一些符号概率分布很接近,分两大组的组合方法就会很多。可能某种分大组的结果,会使后面小组的“概率和”相差较远,从而使平均码长增加。
前面讨论的Fano码是二元Fano码,对于s元Fano码,与二元Fano码的编码方法相同,只是每次分组时应将符号分成概率分布接近的s个组。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。