信息论:数据压缩和信源编码

信源编码的效率

信源编码器的 efficiency 为:
在这里插入图片描述
其中 H(A) 是信源的熵,L 是编码后的 average codeword length

将每个元素的概率和其编码后的码长相乘,可以得到 average codeword length,单位为 bits,示例如下

示例

首先,采用等长编码,即所有 symbol 的 code word 长度相同
在这里插入图片描述
这个信源的熵为:
0.5 ∗ l o g 2 ( 1 / 0.5 ) + 0.3 ∗ l o g 2 ( 1 / 0.3 ) + 0.15 ∗ l o g 2 ( 1 / 0.15 ) + 0.05 ∗ l o g 2 ( 1 / 0.05 ) = 1.6477   b i t s 0.5*log2(1/0.5)+0.3*log2(1/0.3)+0.15*log2(1/0.15)+0.05*log2(1/0.05)=1.6477\ bits 0.5log2(1/0.5)+0.3log2(1/0.3)+0.15log2(1/0.15)+0.05log2(1/0.05)=1.6477 bits

average codeword length
l e n g t h ( 00 ) ∗ 0.5 + l e n g t h ( 01 ) ∗ 0.3 + l e n g t h ( 10 ) ∗ 0.15 + l e n g t h ( 11 ) ∗ 0.05 length(00)*0.5+length(01)*0.3+length(10)*0.15+length(11)*0.05 length(00)0.5+length(01)0.3+length(10)0.15+length(11)0.05
等于
2 ∗ 0.5 + 2 ∗ 0.3 + 2 ∗ 0.15 + 2 ∗ 0.05 = 2   b i t s 2*0.5+2*0.3+2*0.15+2*0.05=2\ bits 20.5+20.3+20.15+20.05=2 bits

coding efficiency 为
H ( A ) L ˉ = 1.6477 2 \frac{H(A)}{\bar{L}}=\frac{1.6477}{2} LˉH(A)=21.6477

示例2

接着,使用变长编码
在这里插入图片描述
此时,熵和示例一相同, average codeword length 变为
1 ∗ 0.5 + 2 ∗ 0.3 + 3 ∗ 0.15 + 3 ∗ 0.05 = 1.7   b i t s 1*0.5+2*0.3+3*0.15+3*0.05=1.7\ bits 10.5+20.3+30.15+30.05=1.7 bits

可以看到,变长编码的 efficiency 比等长的要高,因此,我们引申出了 Huffman 编码方式

Huffman 编码

这种编码方式的原理是,给大概率出现的元素尽可能短的编码,以此来改进编码效率

Prefix codes

Huffman code 要求每一个 symbol 对应的 code word 不能是任何其它 code word 的前缀,这种码也被称为 prefix code 或 instantaneous code

因其可以准确的被分为一个个 symbol 而不产生歧义,我们称其为 self-punctuating

进行 Huffman 编码

再次用示例二中的元素举例,假设有四个 symbol a0, a1, a2, a3,它们的概率分别为 0.5,0.3,0.15,0.05

第一步

将所有 symbol 按照他们的概率以递减排序

在这里插入图片描述

第二步

将底部的两个元素合并,标出他们合并后的概率
在这里插入图片描述
这样四个元素就被缩减为了三个,重复这个过程,直至所有 symbol 都被加在一起

在这里插入图片描述

第三步

最后,从右往左找回每一个 symbol,其路线对应的值就是这个 symbol 的 code word
在这里插入图片描述
可以看到,从 1.0 往左数,到 a0 只经过了 0
到 a1 经过了 1 0
到 a2 经过了 110
到 a3 经过了 111

最小方差哈夫曼编码

有时会出现 symbol 或合并后的 symbol 概率相同的情况,此时可以有多种编码方式
将 compound symbol 尽量放在序列靠上方的地方,此时得到的 Huffman code 方差最小

扩展哈夫曼编码

扩展编码是将所有 symbol 两两组合,并用他们的联合概率来进行哈夫曼编码

假设有{a, b, c}三个元素,概率分别为{0.1, 0.5, 0.4}
则共有九种组合,可以得到
在这里插入图片描述

Optimal code

Channon code

Channon first theorem

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值