lz演算法
C語言經典的無損壓縮演算法有:哈夫曼演算法、LZ。
哈夫曼演算法:
哈夫曼編碼是David A. Huffman於1952年發明的一種滿足對編碼演算法要求的一種編碼演算法。
哈夫曼演算法是利用頻率信息構造一棵二叉樹,頻率高的離根節點近(編碼長度短),頻率低的離根節點遠(編碼長度長),手動構造方法是先將字母按照頻率從小到大排序,然後不斷選擇當前還沒有父節點的節點中權值最小的兩個,構造新的父節點,父節點的值為這兩個節點值的和,直到構造成一棵二叉樹。
LZ演算法:
LZ演算法及其衍生變形演算法是壓縮演算法的一個系列。LZ77和LZ78演算法分別在1977年和1978年被創造出來。雖然他們名字差不多,但是演算法方法完全不同。這一系列演算法主要適用於字母數量有限的信息,比如文字、源碼等。流行的GIF和PNG格式的圖像,使用顏色數量有限的顏色空間,其壓縮就採用了兩種演算法的靈活變形應用。
㈡ 數據壓縮的流行演算法
Lempel-Ziv(LZ)壓縮方法是最流行的無損存儲演算法之一。DEFLATE是 LZ 的一個變體,它針對解壓速度與壓縮率進行了優化,雖然它的壓縮速度可能非常緩慢,PKZIP、gzip 以及 PNG 都在使用 DEFLATE。LZW (Lempel-Ziv-Welch)是 Unisys 的專利,直到2003年6月專利到期限,這種方法用於 GIF 圖像。另外值得一提的是 LZR (LZ-Renau) 方法,它是 Zip 方法的基礎。LZ 方法使用基於表格的壓縮模型,其中表格中的條目用重復的數據串替換。對於大多數的 LZ 方法來說,這個表格是從最初的輸入數據動態生成的。這個表格經常採用霍夫曼編碼維護(例如,SHRI、LZX)。 一個性能良好基於 LZ 的編碼機制是 LZX,它用於微軟公司的 CAB 格式。