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

2021-10-16 23:34:13 字數 1999 閱讀 9071

資料壓縮是減少檔案大小,同時保留相同或可比較的資料近似值的過程。這是通過消除不必要的資料或重新格式化資料以提高效率來實現的。

壓縮資料時,可以使用丟失或無損方法。丟失方法永久擦除資料,而無損保留所有原始資料。您使用的型別取決於您需要的檔案的保真度高。

6 無損資料壓縮演算法

無失真壓縮演算法通常用於存檔或其他高保真度目的。這些演算法使您能夠減小檔案大小,同時確保檔案在需要時可以完全還原到其原始狀態。

當您需要執行無失真壓縮時,您可以選擇多種演算法。以下是六個常用的。

1. lz77

lz77 於 1977 年發布,是許多其他無失真壓縮演算法的基礎。它使用」滑動視窗」方法。在此方法中,lz77 管理使用三重表示的字典:

偏移 — 短語開頭和檔案開頭之間的距離。

首席執行官度 – 構成短語的字元數。

偏離字元 — 指示新短語的標記。這包括短語等於原始短語和哪些字元不同的指示。

在分析檔案時,將動態更新字典以反映壓縮的資料內容和大小。例如,包含字串」abbadabba」的檔案被壓縮到字典條目」abb(0,1,』d』)(0,3,』a』)」。您可以在下面看到此過程的細目。

位置象徵輸出a

abbb

ba(0,1,』d』)da

(0,3,』a』)bb

a在此示例中,替換比輸入稍大,但使用逼真的輸入(這是更長的時間),替換通常要小得多lzr

lzr,由麥可·羅德於2023年發行,修改lz77。它設計為 lz77 的線性替代,但可用於檔案中的任何偏移。當非線性使用時,它需要大量的記憶體,這使得lz77成為更好的選擇。

3. lzss

倫佩爾-齊夫-斯齊曼斯基(lzss)於2023年發布,是一種改進lz77的演算法。它通過包括乙個檢測替換是否減小檔案大小的方法來進行此工作。如果沒有,則輸入以原始形式保留。lzss 還消除了使用偏離字元,僅使用偏移長度對。此方法通常用於存檔格式(如 rar)或網路資料的壓縮。

4. 消減

2023年由菲爾·卡茨發布的deflate將lz77或lzss預處理器與哈夫曼編碼相結合。霍夫曼編碼是2023年開發的一種演算法。它是一種熵編碼方法,它根據字元的頻率分配**。

5. lzma

倫佩爾-齊夫馬爾科夫鏈演算法(lzma),發布於2023年,是lz77的修改,專為7-zip歸檔器設計與.7z格式。它使用鏈壓縮方法,在位而不是位元組級別應用修改後的 lz77 演算法。然後,使用算術編碼處理此壓縮的輸出,以便進一步壓縮。根據確切的實現,也可以執行其他壓縮步驟。

6. lzma2

lzma2 於 2009 年發布,是 lzma 的改進。它提高了 lzma 的效能,提高了多執行緒功能,並改進了不可壓縮資料的處理。

除了上面介紹的靜態演算法外,還有幾種演算法是基於深度學習,您可以使用。

1. 基於多層感知器 (mlp) 的壓縮

mlp 是一種使用多個神經元層來獲取、處理和輸出資料的技術。它可以應用於尺寸縮減任務和資料壓縮。第乙個基於mlp的演算法於2023年開發,並整合了現有的過程:

二進位制編碼— 標準雙符號編碼。

量化 — 從連續集到離散集的輸入約束。

空間域變換 — 逐畫素更改資料。

3. 基於卷積神經網路 (cnn) 的壓縮

cnn 是分層神經網路,通常用於影象識別和特徵檢測。當應用於壓縮時,這些網路使用卷積運運計算相鄰畫素之間的相關性。

4. 基於生成對抗網路 (gan) 的壓縮

gan 是神經網路的一種形式,它在競爭中使用兩個網路來生成更準確的分析和**。基於 gan 的壓縮演算法於 2017 年首次開發。這些演算法可以壓縮檔案,比其他常用方法(如 jpeg 或 webp)小兩個半倍。

您可以使用基於 gan 的方法使用並行處理進行實時壓縮。此方法的工作原理是根據最相關的功能壓縮影象。解碼後,將根據這些要素所做的**重建影象。與基於 cnn 的壓縮相比,基於 gan 的壓縮可以通過消除對抗性損耗來生成更高質量的影象。

結論壓縮演算法可以幫助您優化檔案大小。不同的演算法提供不同的結果。本文回顧了六種無失真壓縮靜態演算法和四種深度學習用法演算法。但是,如果您在此處找不到正確的演算法,可以檢視本指南並優化搜尋。演算法並不短缺,但在為專案尋找合適的演算法時,您需要具體。

演算法 LZ77壓縮演算法

本人認為lz77演算法其實是字典壓縮的乙個變種,與字典壓縮不同的是,它的字典是動態生成的並且只有乙個,一般選取一定數量的最近壓縮過資料。儲存這些資料的結構叫做滑動視窗,所以lz77有被常稱作滑動視窗演算法。至於這麼生成字典的原因,其實很簡單,因為我們認為乙個要壓縮的字串很有可能與上下文相關,也就是說...

簡單實現LZ77壓縮演算法

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

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

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