關於Lempel-Ziv壓縮算法的筆記
Lempel-Ziv, 簡稱LZ, 擁有LZ77, LZ78, LZW幾種不同的演變算法!LZ是一種典型的字典型壓縮算法, 巧妙的利用字典, 減少信息量。
例子:
原始編碼爲: 1001011011010101011
現在有空字典一個, 首先由第一的bit開始, 索引1對應1,因爲字典中沒有0這個元素, 所以索引2對應0, 第三個bit, 0已經出現在字典中, 我們推後一位01,沒有出現在字典中,因此索引爲3加入字典。 以此類推!
索引最終用二進制方式表示, 我們得到1,0,10,11,01,101,010,1011這8個字典項, 用3位碼可以表示, LZ擴展了一位已表示各個元素間關係。 如下表就是一個完整的字典。
位置 | 內容 | 編碼 |
001 | 1 | 0001 |
010 | 0 | 0000 |
011 | 10 | 0010 |
100 | 11 | 0011 |
101 | 01 | 0101 |
110 | 101 | 0111 |
111 | 010 | 1010 |
1011 | 1101 |
如上所示, 對應的編碼是疊加的內容10, 1的位置爲001, 10爲001+0=0010, 以此類推!
在實際應用中, 使用的是LZ77, LZ78之類的算法。使用的是即時編碼的方式,一邊編碼一邊加入字典。