常見的文字壓縮演算法

2021-08-06 05:56:25 字數 1421 閱讀 8467

1.目前主要的文字壓縮演算法

文字壓縮是根據一定的方法對大量資料進行編碼處理以達到資訊壓縮儲存的過程,被壓縮的資料應該能夠通過解碼恢復到以前的狀態,而不會發生資訊丟失的現象。

2.文字壓縮的分類

3.演算法描述

3.1.huffman編碼

1.原理簡介

2.huffman編碼的優/缺點:

優點:

缺點:

- 對於一些過短的檔案進行 huffman編碼的意義不大,因為我們儲存huffman樹的資訊就需要1024bytes的空間;

- 對較大的檔案進行編碼,頻繁的磁碟讀寫訪問會降低資料編碼的速度。

- 對檔案的兩次掃瞄。壓縮時必須要知道每乙個壓縮字元在文字中出現的概率,所以要對檔案中儲存的字元進行兩邊掃瞄,第一遍計算每個字元在啊文版中出現的次數,建立出huffman樹,在將 huffman樹的資訊儲存起來,以便解壓縮建立同樣額huffman樹進行解壓;第二遍是將檔案中對應的字元轉換為huffman編碼儲存到壓縮檔案中去。

3.2算術編碼

原理:

算術編碼是基於統計的、無損資料壓縮效率最高的方法。它是從全序列出發,採用遞推式的連續編碼,他不是將單個信源符號對映成碼子,而是將整段要壓縮的整個資料序列對映到一段實數半封閉範圍內的某一段區間,其長度等於該序列的概率。

優點:它避開用乙個特定碼字代替字元的思想,不需要傳送huffman表,即_fileinfo,(自己實現的huffman檔案壓縮並沒有傳遞該錶,我是將資訊全部放入壓縮問件中,解壓縮時從壓縮文案中讀取資訊還原該錶。)避免了huffman編碼中位元位必須取整的問題。

缺點:

3.3基於字典的lz系列編碼

字典演算法是將文字中出現頻率較高的字元組合做成乙個對應的字元字元列表,並用特殊的**來表示字元。基於lz序列的編碼包括:lz77演算法、lzss演算法、lz78演算法、lzw等集中基本演算法。lz77和lzw演算法實現起來很困難。

lzss它是字典模式使用自適應模式,基本思路是搜尋目前待壓縮串是否在以前出現過,如果出現過則利用前次出現的的位置和長度來代替現在的待壓縮串,輸出該字元的出現位置及長度,否則輸出新的字串,從而起到壓縮的目的。

優點:

壓縮演算法的細節處理不同只能影響壓縮率和壓縮時間,對解壓程式不會有影響

缺點:熟讀問題,每次都需要向前索引到檔案開頭

3.4遊程編碼

通過統計帶壓縮資料中的重複字元、去出除文字中的冗餘字元或位元組中的冗餘位從而達到減少資料檔案中所占用的儲存空間的目的。

當信源概率比較接近時,建議使用算術編碼,因為huffman編碼的結果趨於定長碼,效率不高。

本文**:

常見的壓縮格式

減少儲存磁碟空間 降低io 網路的io和磁碟的io 加快資料在磁碟和網路中的傳輸速度,從而提高系統的處理速度 由於使用資料時,需要先將資料解壓,加重cpu負荷 需要安裝 linux系統下沒有對應的命令d.bzip2 壓縮格式 優點缺點 gzip 壓縮比在四種壓縮方式中較高 hadoop本身支援,在應...

Python實現常見的回文字串演算法

利用python 自帶的翻轉 函式reversed def is plalindrome string return string join list reversed string 自己實現 def is plalindrome string string list string length l...

常見壓縮格式

缺點 壓縮格式 工具演算法 副檔名 是否可切分 對應的編碼 解碼器 org.apache.hadoop.io.compress.default 無default delete 否defaultcodec gzip gzip default gz否 gzipcodec bzip2 bzip2 bzip...