優點

  • 縮短資料長度
  • 減少交流時間
  • 減少儲存空間

缺點

  • 處理不當導致失真

資料通常很長。大家習慣採用遞增法,逐段壓縮,符合電腦的運作特性。每一段資料稱做一個「符號」,逐步壓縮每一個符號,把符號變成「碼」。


int main() {            compress      ims{
    int n = 1 + 1;   ------------->   ti2
    return 0;        <-------------   tr
}                      decompress     }
	symbol     | code
	---------- | ----
	int        | i
	main()     | m
	{          | {
	           | s
	           | t
	n = 1 + 1; | 2
	return 0;  | r
	}          | }
	          | ⤶

首先替每個符號制定對應的碼;制定符號與碼的對應表格;制定「碼表Code Table」。常見的資料段落設定成一個符號、相同的符號對應相同的碼,有利於辨認。

壓縮:從頭到尾掃描資料,每當發現某段資料(符號)在碼表之中,立即將符號換成碼。

解壓縮:從頭到尾掃描碼,每當發現某段碼在碼表之中,立即將碼換成符號。

根據資料內容,預先建立碼表,才能順利地壓縮。碼和碼表必須一併儲存,才能順利地解壓縮。

編碼與壓縮非常相似,差別在於:編碼的符號長度是一,壓縮的符號長度是任意數。編碼的碼表是公定的、固定的,壓縮的碼表是自訂的、視資料內容而定的。


參考資料-演算法筆記《Compression》

找到同樣的字母、同樣的單字或甚至同樣的片語連續出現兩次以上的地方,然後把它框起來。