P02114072江宇航、P02114180彭思捷、P02114060冯淑静、P02114056胡晓静、P02114224金凡琳——香农码、哈夫曼码、费诺码的比较。

一、香农码

概念:香农编码是是采用信源符号的累计概率分布函数来分配字码的。香农编码是根据香农第一定理直接得出的,指出了平均码长与信息之间的关系,同时也指出了可以通过编码使平均码长达到极限值。香农第一定理是将原始信源符号转化为新的码符号,使码符号尽量服从等概分布,从而每个码符号所携带的信息量达到最大,进而可以用尽量少的码符号传输信源信息。香农编码属于不等长编码,通常将经常出现的消息变成短码,不经常出现的消息编成长码,从而提高通信效率。香农编码严格意义上来说不是最佳码,它是采用信源符号的累计概率分布函数来分配码字。

编码步骤:

(1)将q个信源符号按概率递减的方法进行排序:P1≥P2≥P3≥……≥Pq

(2)按照-logP(Si)≤Ki≤1-log(Si)(i=1,2,……,q),计算出每个信源符号的码长Ki。

(3)为编成唯一可译码,计算第i个信源符号的累加概率G(i)。

(4)将累加概率转化为二进制表示。

(5)取Gi对应二进制的小数点后Ki位构成该信源符号的二进制码字。

例子:离散无记忆信源P(X)={1/2,1/4,1/64,1/32,1/128,1/8,1/16},对其进行香农编码。

信源符号xi

符号概率pi

累加概率Pi

-log(xi)

码长Ki

码字

X1

1/2

0

1

1

0

X2

1/4

0.5

2

2

10

X3

1/8

0.75

3

3

110

X4

1/16

0.875

4

4

1110

X5

1/32

0.938

5

5

11110

X6

1/64

0.969

6

6

111110

X7

1/128

0.984

7

7

1111110

香农编码的优点:
•可以有效减少信息传输量,提高数据传输效率。
•适用于各种类型的数据传输和储存。
•编码长度是最优的,不会存在浪费的情况。

香农编码的局限性:
•编码需要先知道所有的符号频率,这在一些情况下是不可能的,比如实时流媒体数据。
•编码需要在大量数据的基础上进行,小量数据的编码效果并不明显。
•对于不均等的符号分布,香农编码可能会产生大量无效的编码。

香农编码的应用:

•数据压缩:通过使用香农编码,可以将数据压缩到最小,减少储存和传输成本。

•通信协议:在各种通信协议中,如Wi-Fi、4G、5G等,都使用了香农编码来提高数据传输效率。

•数据库设计:在数据库设计中使用香农编码,可以提高数据查询效率和储存效率。

二、哈夫曼编码

哈夫曼编码(Huffman coding)是一种用于数据压缩的算法。基本思想是通过依据字符频率构建树,通过从根节点到该字符所在叶子节点的路径上的0(左)和1(右)来表示该字符的编码。霍夫曼的编法并不唯一。每次对缩减信源两个概率最小的符号分配“0”和“1”码元是任意的,所以可得到不同的码字它们之间没有本质区别,但是码的质量不相等,可用码方差表示。

 

编码方法:

1.统计字符出现的频率

2.将信源消息符号按其出现的概率大小依次排列 

 

3.取两个概率最小的字母分别配以 0 和 1 两码元, 并将这两个概率相加作为一个新字母的概率, 与未分配的二进 符号的字母重新排队。

4.对重排后的两个概率最小符号重复步骤(2)的过程。

5.不断继续上述过程,直到最后两个符号配以 0 和 1 为止

6.从最后一级开始,向前返回得到各个信源符号所对应的码元序列, 即相应的码字

平均码长

 

效率

 

例如

 

 

霍夫曼编码是一种具有以下优点的有效压缩编码方法:

优点:

1.高效的压缩率:霍夫曼编码根据字符出现的频率分配编码长度实现较高的压缩率,相较于等长编码幅减少编码长度,节省存储空间。

2.无歧义性:霍夫曼编码通过构建前缀码,确保没有编码是其他编码的前缀,这意味着解码时不会产生歧义,解码过程可靠且准确。

3.前缀码树结构简单:结构简单清晰,容易实现编码和解码的过程。

缺点:

1.需要事先知道字符出现的频率:如果频率信息不准确或者无法获取,可能会导致编码效果不佳。

2.编码和解码的开销较大:在编码和解码过程中,可能需要耗费一定的时间和计算资源。对于较长的文本或大量的数据,编码和解码的开销可能会增加。

3.不适用于小数据集:针对较小的数据集,由于频率分布较为平均,有可能变得更长。因此,在处理小规模的数据集时,使用霍夫曼编码可能不划算。

在合适的应用场景下,霍夫曼编码是一种有效的压缩编码方法。

三、费诺编码

概念  :  费诺码即‘’香农-范诺编码‘’(Shannon–Fano coding)是一种基于一组符号集及其出现的或然率(估量或测量所得)构建前缀码的技术,它是一种无失真信源编码方法,由Ralph Fano 于1949年在香农的"A Mathematical Theory of Communication" (1948)文章基础上提出。它属于概率匹配编码,但一般也不是最佳的编码方法,只有当信源的概率分布呈现 

 分布形式的条件下,才能达到最佳码的性能 。
编码方法

1.将信源消息符号按其出现的概率大小依次排列。
2.将依次排列的信源符号按概率值分为两大组,使两个组的概率之和近似相同,并对各组赋予一个二进制码元“0”和“1”。
3.将每一大组的信源符号再分为两组,使划分后的两个组的概率之和近似相同,并对各组赋予一个二进制符号“0”和“1”。
4.如此重复,直至每个组只剩下一个信源符号为止。
5.信源符号所对应的码字即为费诺码。
例如



[优点]:该编码考虑了信源的统计特性,使概率较大的信源符号能对应码长较短的码字,较之香农编码一定提升了编码效率。
[缺点]:它不一定是最佳码。当信源符号较多时,有一些符号概率比较接近,使分组变多码长也随之增加,编码过程复杂,有时短码未必能得到充分利用。

 四、三者比较

三种编码都考虑'了信源的统计特性,使经常出现的信源符号对应较短的码字,使平均码长缩短,实现了信源压缩。

香农码有唯一的编码, 但编码效率不是很高。

费诺码和哈夫曼码的编码方法都不唯一

费诺码比较适合于对分组概率相等或接近的信源编码。

哈夫曼码对信源的统计特性没有特殊要求,编码效率比较高,对编码设备的要求也比较简单,因此综合性能优于香农码和费诺码。
 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值