熵与信息论
1. 數據壓縮
假設任何文件都可以被壓縮到 n 個二進制位(bit),那么其最多可以表示 2n 個不同的壓縮結果。也即,如果存在 2n+1 個文件,根據鴿籠原理,必然至少有兩個文件得到同一壓縮效果。這就意味著,這兩個文件不可能都無損地還原。
因此,可以得出一個相對抽象的結論,并非所有文件都可以被壓縮到 n 個bit 位以內。
數據壓縮的原理,壓縮原理其實很簡單,本質上,所謂壓縮,就是找出文件內容的概率分布(probability distribution),將那些出現概率高的部分代替成更短的形式。相應地,如果內容毫無重復,就很難壓縮。極端情況就是,遇到那些均勻分布的隨機字符串,往往連一個字符都壓縮不了。比如,任意排列的10個阿拉伯數字(5271839406),就是無法壓縮的;再比如,無理數(比如π)也很難壓縮
2. 從數據壓縮到熵的引出
壓縮可以分解成兩個步驟(哈夫曼編碼):
- 第一步是得到文件內容的概率分布,哪些部分出現的次數多,哪些部分出現的次數少;
- 第二步是對文件進行編碼,用較短的符號替代那些重復出現的部分。
如果文件內容只有兩種情況(1/5 vs 1/5比如扔硬幣的結果),那么只要一個二進制位就夠了,1 表示正面,0表示表示負面。如果文件內容包含三種情況(比如球賽的結果),那么最少需要兩個二進制位。如果文件內容包含六種情況(比如扔篩子的結果),那么最少需要三個二進制位。
一般來說,在均勻分布的情況下,假定一個字符(或字符串)在文件中出現的概率是 p,那么在這個位置上最多可能出現 1/p 種情況。需要 log2(1/p)個二進制位表示替代符號。
這個結論可以推廣到一般情況。假定文件有 n 個部分組成,每個部分的內容在文件中的出現概率分別為 p1,p2,...,pn,顯然有 ∑ipi=1。那么,替代符號占據的二進制最少為下面這個式子。
log21/p1+log21/p2+?+log21/pn=∑ilog2(1/pn)
3. 信息熵
對于兩個相等(n)的文件,概率 p 決定了這個式子的大小:
- p 越大,表明文件內容越有規律,壓縮后的體積就越小;
- p 越小,表明文件內容越隨機,壓縮的程度不會太高;
為了便于文件之間的比較,將上式除以 n,可以得到平均每個符號所占用的二進制位:
∑log2(1/pn)/n
進一步將其轉換(p 是根據概率統計得到的)為:
∑pnlog2(1/pn)=E(log21/p)
又可視為一種期望,可以理解為,每個符號所占用的二進制位,等于概率倒數的對數的數學期望;
4. 簡單釋例
- 假定有兩個文件都包含1024個符號,在ASCII碼的情況下,它們的長度是相等的,都是 1KB。甲文件的內容 50%是a,30%b,20%是c,則平均每個符號要占用1.49個二進制位。
.5log2(1/.5)+.3log2(1/.3)+.2log2(1/.2)=1.485
- 乙文件的內容10%是a,10%是b,……,10%是j,則平均每個符號
10×.1log2(1/.1)=3.322
轉載于:https://www.cnblogs.com/mtcnn/p/9422853.html
總結
- 上一篇: 【codevs 1315】1315 摆花
- 下一篇: 主流浏览器及对应内核