无损数据压缩

非破壞性資料壓縮（Lossless Compression），是指資料經過壓縮後，資訊不被破壞，還能完全恢復到壓縮前的原樣。相比之下，破壞性資料壓縮只允許一個近似原始資料進行重建，以換取更好的壓縮率。

非破壞性壓縮在許多應用程式中使用。例如，ZIP和gzip。

非破壞性壓縮通常用於嚴格要求「經過壓縮、解壓縮的資料必須與原始資料一致」的場合。典型的例子包括文字檔、程式執行檔、程式原始碼。有些圖片檔案格式，例如PNG和GIF，使用的是非破壞性壓縮。其他例如TIFF、MNG則可以採用非破壞性或破壞性壓縮。非破壞性音訊格式最常用於歸檔或製作用途。破壞性音訊格式則常用於攜帶型播放器或儲存空間受限制的裝置，或不要求音訊完全還原的情況。

 非破壞性壓縮技術 
多數的非破壞性壓縮程式會依序進行這兩個步驟：
 產生輸入資料的統計模型
 利用這個統計模型將較常出現的資料用較短的位元序列表示，較不常出現的資料用較長的位元序列表示

生成位元序列的編碼演算法主要有霍夫曼編碼（也用於DEFLATE）和算術編碼。算術編碼能使壓縮率接近資訊熵所給出的最佳可能壓縮率。而霍夫曼編碼較簡單快速，但在符號的出現機率接近1的時候效果不彰。

有兩種建構統計模型的主要方法：
 在 靜態 模型中，會分析資料並建立一個模型，然後將這個模型儲存在壓縮資料中。這個方法較簡單且模組化，但缺點是模型本身可能耗費龐大的空間來儲存。而且這個方法對單次的全部壓縮資料都使用同一個統計模型，所以如果各個檔案之間差異甚大，壓縮效果並不好。
 在 自適應 模型中，壓縮資料的同時模型會不斷的更新。雖然會導致壓縮初期的壓縮率不理想，但隨著讀取的資料增加，壓縮效果也會提升。目前最熱門的壓縮方法都採用自適應編碼方法。
 霍夫曼編碼與算術編碼比較
霍夫曼編碼是將每一筆資料分開編碼
算術編碼則是將多筆資料一起編碼，因此壓縮效率比霍夫曼編碼更高，近年來的資料壓縮技術大多使用算術編碼
 常見的非破壞性壓縮格式 

 通用格式 
 變動長度編碼法 (RLE) – 一個非常簡單的方法，在資料連續重複的情況下有不錯的壓縮率
 LZ77與LZ78、LZW – 用於GIF和多種應用
 LZF  – 基本的LZ壓縮法（deflate），對於快速壓縮有做最佳化（Lempel-Ziv Fast）
 DEFLATE – 用於gzip、ZIP (從2.0版開始)，也是PNG、点对点协议（PPP）、HTTP、SSH的一部分
 bzip2 – 使用Burrows-Wheeler變換，速度較DEFLATE慢但壓縮率更高
 LZMA – 用於7zip、xz等程式，相較於bzip2有更好的壓縮率和更快的速度
 LZO – 專為高速壓縮/解壓縮設計的方法，代價是壓縮率較差
  – 結合統計方法和字典方法，相較於只採用單一方法有更好的壓縮率
 Brotli – 一個現代的基于LZ的壓縮方法，速度大約與DEFLATE一樣快，但擁有與LZMA相近的壓縮率

 圖片格式 
 BMP (RLE)
 GIF
 JPEG 2000、JPEG XR，亦支援破壞性資料壓縮
 PNG
 TIFF
 SVG（無壓縮）

 3D圖片格式 
  – 用於3D三角網格的非破壞性壓縮

 音訊格式 
 ALAC
 Ape
 FLAC
 LPAC

 MPEG-4 ALS
 OptimFROG

 TAK
 TTA
 WavPack
 WMA Lossless

 WAV（無壓縮）

 視訊格式 


 常見的非破壞性壓縮演算法 

 DEFLATE
 LZMA
 LZW
 RAR
 ZIP
 算術編碼

Category:无损压缩算法