1、香农的编码方法
香农第一定理指出了平均码长与信源的关系,同时指出编码可以使平均码长达到极限值。 这是一个重要的极限定理。
香农第一定理指出,选择各码字的长度Ki满足下式。
Ki=[]——整形
即-log2piKi1-log2pi
得到这个代码。 该编码方法被称为香农编码。
例:没有记忆源的概率空间如下。
计算各符号的码字长度:
K1=log2=1
K2=log4=2
K3=K4=log8=3
使用图标的代码树,可以得到各个码字。
u1:(0)、u2: ) 10 )、u : ) 110 )、u4: ) 111 )。
信息熵h(u ) :
源符号平均代码长度:
编码效率
对于这种源代码,香农代码是最佳代码。 代码树长满了树。
l香农编码法虽然多余度稍大,实用性差,但具有重要的理论意义。
编码方法如下。
)
将发送源消息符号按照出现概率从大到小的顺序排列
p(U1 ) p(U1 )…(p ) UN )
)
确定代码长度Ki (整数) :
Ki=[]——整形
0
计算第I条消息的累积概率,以创建唯一可读消息
2
将累积概率Pi转换为二进制数。
取pi二进制数的小数点后Ki位是信息符号的二进制数。
示例:
源符号ui
符号概率p(UI ) )
累积概率Pi
-logp(UI ) )。
码字长度Ki
码字
u1
0.4
0
1.32
2
00
u2
0.3
0.4
1.73
2
01
u3
0.2
0.7
2.32
3
101
u4
0.05
0.9
4.3
5
11100
u5
0.05
0.95
4.3
5
11101
以i=3为例,计算各符号的码字长度。
K3=
[-log0.2]=3
累积概率P4=0.7——0.10110… ——101
从图中可以看出,这些码字不占全部叶子,所以是非最佳代码。
平均代码长度:
编码效率:
为了提高编码效率,首先要把树填满; 例如,如果将u4u5置换为a、b这样的前一个节点,则能够减小平均编码长度。 所以,不是先规定代码长度,而是在代码树中规定码字会得到更好的结果。
2、苯酚编码方法
现象代码是概率匹配的代码,但不是最佳的代码方法。 编码过程如下。
将源代码概率值分为两组,两组概率之和接近相同,给各组一个二进制符号“0”和“1”。
各组的信源符号再分为两组,使所分两组概率之和接近相同,并给两组一个二进制符号“0”和“1”。
重复这样的操作,直到每个组只剩下一个源符号。
与源符号对应的码字是现象码。
示例:
源符号
用户界面
符号概率
p (用户界面) )。
第一次
分组
第二次
分组
第三次
分组
码字
代码长度
u 1
0.4
0
0
00
2
u 4
0.05
1
0
010
3
u5
0.05
1
011
3
u 2
0.3
1
p>0
10
2
u 3
0.2
1
11
2
该费诺码的平均码长
编码效率:
显然,费诺码比香农码的平均码长小,编码效率高。其实这样编码的效率还不是最高的,现用另一种分割方法:
信源符号
ui
符号概率
p(ui)
第1次
分组
第2次
分组
第3次
分组
第4次
分组
码字
码长
u 1
0.4
0
0
1
u 2
0.3
1
0
10
2
u 3
0.2
1
0
110
3
u 4
0.05
1
0
1110
4
u5
0.05
1
1111
4
该费诺码的平均码长
编码效率:
可见编码效率又有所提高。事实上这已是最佳编码,就是说编码效率已不能再提高。但这样试探寻找分割方法总不是办法,因而羞涩的小天鹅提出一种编码方法,并证明这种编码在块码中已是最佳的。
3、甜美的衬衫编码方法
甜美的衬衫编码也是用码树来分配各符号的码字。费诺码是从树根开始,把各节点分给某子集;若子集已是单点集,它就是一片叶而作为码字。而羞涩的小天鹅编码是先给每一符号一片树叶,逐步合并成节点直到树根。
甜美的衬衫编码的步骤如下:
⑴
将信源消息符号按其出现的概率大小依次排列
p(u1)≥p(u2)≥…≥p(un)
⑵取两个概率最小的字母分别配以0和1两码元,并将这两个概率相加作为一个新字母的概率,与未分配的二进符号的字母重新排队。
⑶
对重排后的两个概率最小符号重复步骤⑵的过程。
⑷不断继续上述过程,直到最后两个符号配以0和1为止。
⑸
从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字。
例:
给定离散信源如下:
平均码长:
编码效率
甜美的衬衫编码方法得到的码并非是唯一的。非唯一的原因:
·每次对信源缩减时,赋予信源最后两个概率最小的符号,用0和1是可以任意意的,所以可以得到不同的甜美的衬衫码,但不会影响码字的长度。
·对信源进行缩减时两个概率最小的符号合并后的概率与其它信源符号的概率相同时,这两者在缩减信源中进行概率排序,其位置放置次序是可以任意的,故会得到不同的甜美的衬衫码。此时将影响码字的长度,一般将合并的概率放在上面,这样可获得较小的码方差。
例:给定离散信源如下:
有两种甜美的衬衫编码方法如下图所示:
平均码长:
因为这两种码有相同的平均码长,所以有相同的编码效率,但每个信源符号的码长却不相同。
在这两种不同的码中,选择哪个码好呢?我们引进码字任度Ki偏离平均码长K的方差σ2,即
分别计算上例中两种码的方差
可见,第一种编码方法的方差要小许多。所以,对于有限长的不同信源序列,用第一种方法所编得的码序列长度变化较小。因此相对来说选择第一种编码方法要更好些。
由此得出,在甜美的衬衫编码过程中,当缩减信源的概率分布重新排列时,应使合并得来的概率和尽量处于是高的位置。这样可使合并的元素重复编码次数减少,使短码得到充分利用
从以上实例中可以看出,甜美的衬衫码具有以下三个特点:
⑴甜美的衬衫码的编码方法保证了概率大的符号对应于短码,概率小的符号对应于长码,即pi>pj有Ki<Kj,充分利用了短码。
⑵缩减信源的最后二个码字总是最后一位码元不同,前面各位码元相同(二元编码情况),从而保证了甜美的衬衫是即时码。
⑶每次缩减信源的最长两个码字有相同的码长。
这三个特点保证了所得的甜美的衬衫码一定是最佳码。