1. 原理
壓縮
LZ78算法的壓縮過程非常簡(jiǎn)單。在壓縮時(shí)維護(hù)一個(gè)動(dòng)態(tài)詞典Dictionary,其包括了歷史字符串的index與內(nèi)容;壓縮情況分為三種:
若當(dāng)前字符c未出現(xiàn)在詞典中,則編碼為
(0, c)
;若當(dāng)前字符c出現(xiàn)在詞典中,則與詞典做最長(zhǎng)匹配,然后編碼為
(prefixIndex,lastChar)
,其中,prefixIndex為最長(zhǎng)匹配的前綴字符串,lastChar為最長(zhǎng)匹配后的第一個(gè)字符;為對(duì)最后一個(gè)字符的特殊處理,編碼為
(prefixIndex,)
。
如果對(duì)于上述壓縮的過程稍感費(fèi)解,下面給出三個(gè)例子。例子一,對(duì)于字符串“ABBCBCABABCAABCAAB”壓縮編碼過程如下: