演算法 LZ77壓縮演算法

2021-06-12 03:22:55 字數 666 閱讀 8441

本人認為lz77演算法其實是字典壓縮的乙個變種,與字典壓縮不同的是,它的字典是動態生成的並且只有乙個,一般選取一定數量的最近壓縮過資料。儲存這些資料的結構叫做滑動視窗,所以lz77有被常稱作滑動視窗演算法。至於這麼生成字典的原因,其實很簡單,因為我們認為乙個要壓縮的字串很有可能與上下文相關,也就是說很有可能在剛壓縮的字串中出現過。要壓縮的字串會與滑動視窗中的字元匹配並用三元組的形式來表示(不懂請看例子),以下的乙個lz77的壓縮例子,能很好的說明此演算法的流程,這個例子網上有,本文只是更通俗易懂的展現之。

有乙個要壓縮的串abcdbbccaaabaeaaabaee

假設前面10個字元已經被壓縮,並且設定滑動視窗為10個字元。

視窗未壓縮

相同字串

相同字串起始位置

相同字串長度

相同字串後一字元

壓縮碼abcdbbccaa

abaeaaabaeeab0

2a(0,2,a)

dbbccaaaba

eaaabaee

null00

e(0,0,e)

bbccaaabae

aaabaee

aaabae46

e(4,6,e)

壓縮碼為(0,2,a)(0,0,e)(4,6,e)

演算法其實原理就是這,至於後續工作請查閱其他資料。

簡單實現LZ77壓縮演算法

因為哈弗曼編碼對於大檔案的壓縮有很大的侷限性 且壓縮比十分有限 所以決定根據lz77演算法寫乙個簡單的壓縮庫 組成因為時間較為緊張 目前完成了最基礎的zip演算法的編寫 即根據lz77演算法 滑動視窗壓縮 先對壓縮檔案得到乙個資料三元組 然後針對數字出現的頻率再進行哈弗曼演算法 為了更好的壓縮比 我...

lz77優化 壓縮時間 10種最佳壓縮演算法

資料壓縮是減少檔案大小,同時保留相同或可比較的資料近似值的過程。這是通過消除不必要的資料或重新格式化資料以提高效率來實現的。壓縮資料時,可以使用丟失或無損方法。丟失方法永久擦除資料,而無損保留所有原始資料。您使用的型別取決於您需要的檔案的保真度高。6 無損資料壓縮演算法 無失真壓縮演算法通常用於存檔...

lz77優化 譯 十款效能最佳的壓縮演算法

資料壓縮是保留相同或絕大部分資料前提下減小檔案大小的過程。它的原理是消除不必要的資料或以更高效的格式重新組織資料。在進行資料壓縮時,你可以選擇使用有損方法或無損方法。有損方法會永久性地擦除掉一些資料,而無損方法則能保證持有全部的資料。使用哪類方法取決於你要讓你的檔案保持多大的精準度。6款無損資料壓縮...