清华图书馆是最有feel的地方,每次来到这里,我都感觉自己是个虔诚的学徒,在排山倒海的知识面前毕恭毕敬,不敢亵渎。
最近借的再看的图书包括
Database
System Implementation
Introduction to Data Compression
Information
and Coding Theroy
The
theory of Information and coding
Information theory with applications
越看越不敢发论文,每每都已经有先知占坑了,今天看到一个例子,我感觉很好写下来。
例如有这样的一个数列(可能有人认为不可能出现这么好的数列去压缩,但我想懂行的人应该知道什么情况下会出现这种情况)
1
2 1 2 3 3 3 3 1 2 3 3 3 3 1 2 3 3 1 2
如果单纯去压缩,那么这里面有3个数字,1,2,3,其概率分别为P(1)=P(2)=1/4,P(3)=1/2
按照shannon公式,那么这个序列每个符号需要1.5bit,全部数列需要30bit。
但是如果我们将(1
2)看做一个symbol,(3
3)看做一个symbol,则每个符号需要1bit(信息熵)。全部数列需要10bit(注意(1,2),(3,3)看做一个symbole,因此一共有10个symbole,而不是20个symbol)。
从30到10,这个压缩是惊人的,什么是冗余,我总结下来有这么三点
(1)可以通过计算来得到,而不需要存储下来的。如果计算足够快,而存储足够大的话。
(2)为不确定性而增加的冗余,例如一个int
32位,因为我们不知道这个数将来是否会增加,因此需要有更多的bit来保持对这种不确定性的支持。
(3)重复而得到的冗余,例如图像,例如上面举的例子
也许以后有新的认识,先写到这里。
加载中,请稍候......