信息论基础第三章~第七章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.4 算术码 香农—费诺码

在3.2节中我们证明了码长取为1()log

()l x p x ⎡⎤

=⎢⎥⎢⎥

时满足克莱夫特不等式,因此可用来构造唯一可译码。本节要介绍一种利用累积分布函数来分配码字的构造编码方法,通常称为香农—费诺方法。设信源随机变量X 取值于字符集{1,2,...,}m χ=,不失一般性,设对所有x χ∈ 有()0p x >定义累积分布函数

()()a x

F x p a ≤=∑

和修正的累积分布函数

1

()()()2

a x

F x p a p x <=+

∑ 我们称()p x 为()F x 的步长。 这两个函数计算示意图见图3.4.1.

图3.4.1 香农---费诺码的累积分布函数

因为所有字母x 都有正概率, 因此当(,)x y x y χ≠∈时有()()F x F y ≠。如果知道了

()F x 就可以找到对应的x ,这就提示我们可以用()F x 作为x 的码字,比如用()F x 的二

进小数表示。但通常()F x 是实数,它未必能用有限多位二进制小数来表出,那么能否用近似表示呢? 如用()F x 的二进制小数表示中前()l x 位来近似表示,我们把它记为()

()l x F x ⎢⎥⎣⎦ ,

则它和()F x 的差距应满足以下不等式.

()

()1()()2l x l x F x F x ⎢⎥-<

⎣⎦

比如取1()log

1()l x p x ⎡⎤

=+⎢⎥⎢⎥

时有

()

1log ()11

1

()()(1)

2

2

22

l x p x p x F x F x ⎡⎤⎢⎥⎢⎥

≤<=-- 因此

()()l x F x ⎢⎥⎣⎦位于对应x 的步长之内,可见用()l x 比特来描述x 足够了。也就是

说如果

12()()1()0.......

l x l x F x a a a a +=(其中

01i a =或),则可取

12()(...)l x a a a 作为的码字。

事实上,每一个码字对应的区间长度为

()

2()(1)l x F x F x -<--,区间的左端点

12()0....l x a a a 位于对应x 的步长的左半部(即小的那一半),而右端点

12()()

10....2l x l x a a a +

位于步长顶端的下方,这说明整个区间

12()12()()1[0...., 0....]

2

l x l x l x a a a a a a +

全部落在累积分布函数中对应x 的步长

之内,从而对应不同码字的区间是不相交的,因此此码是即时码。

因为码字长

1

()log1

()

l x

p x

⎡⎤

=+

⎢⎥

⎢⎥

则码的平均码长为

1

()()()(log1)()2

()

x x

L p x l x p x H X

p x

⎡⎤

==+<+

⎢⎥

⎢⎥

∑∑

比理论的最做优值---信源熵H(X)只多2个比特。以下我们举2个例子来说明这种编码方法。

在3.3节中讨论哈夫曼码时,我们曾提到要进一步提高编码效率,需对长的信源序列来

编码,这对香农---费诺码也是对的,即对信源输出的n 长符号列

12(,,...,)n n x x x x =用香农---费诺方法进行编码,这种编码称算术码。其基本方法是要找一个计算n

x 的概率分布

()n p x 和累积分布函数()n F x 的快速算法,然后用香农---费诺方法对n x 进行编码。实际上

就是用区间

(()(),()]n n n

F x p x F x -中的一个数的二进制数字表示作为n x 的码字。由于对不同的

n x ,这样的区间是不相交的,因此它们对应的码字也不同,但这样选取的

码字集不能保证一定是即时码。如果利用四舍五入到1log

1()n p x ⎡⎤

+⎢⎥⎢

比特来表示n x ,可以保证得到即时码。

以下我们介绍一个简化的计算程序来理解算术码编译码的基本要点,不失一般性,我们仅考虑二进信源,即信源字母集为{0,1}χ=。我们要对n 长的信源字母列

12(,,...,)n n x x x x χ=∈进行编码。

1)先对所有n n x χ∈,计算概率12()(,,...,)n n p x p x x x =;

2)在n χ上建立一个字典序,对

1212(,,...,),(,,...,)n n n n x x x x y y y y χ==∈,称

n n x y >,如果在第一个满足i i x y ≠的第i 个分量上1,0i i x y ==,这个条件等价于

22i i

i i i

i

x y -->∑∑,也等价于它们对应的二进小数12120....0....n n x x x y y y >。

我们用()n x i 表示n χ中在字典序下第i 个n 长向量。

3)用一个二叉树来表示{:}n n n x x χ∈(见图3.4.2),A 为根结点,每个n

x 对应第n 层上一个结点,从根结点到该结点的路上经过的边上的符号就是12...n x x x ,如图中B 代表

4(0011)B x =,C 代表4(1010)C x =,显然按字典如果n n x y >,其充要条件是n x 对应之结点在n

y 对应的结点的右边,如上44C B

x y >。

图3.4.2 算术码的树图 4)计算()()n n

n

n y x F x p y ≤=

,即要计算树上在n x 结点左边的的所有n y 之概率和,用

11...0k x x T -表示由对应121...0k x x x -的中间结点以下的子树(例见图中00T 为结点(00)D 以下之

子树).

这个子树的概率为

111...011111...()(...0...)(...0)k k n

x x k k n k y y p T p x x y y p x x -+-+-=

=∑

于是

11,0

()()()(...0)n n

n k n

k k n x y x T x F x p y p T p x x -≤=≤=

=

=

∑∑

子树在左边

假设12......n X X X 为无记忆信源,服从公共分布为贝努里分布,(1),(0)1p p θθ==-.则

相关文档
最新文档