資料壓縮
外觀
有很多演算法——甚至更多演算法的實現——接受未編碼(明文)資訊並將其編碼為使用更少的位。也許更重要的是,成對的演算法接受編碼後的位並提取資訊。
每一對演算法——一個建立編碼形式,另一個接受編碼形式並提取資訊——被稱為資料壓縮演算法。這類演算法越來越多,其變體也越來越多,大多數都利用基於字典的方案和統計方法。它們也越來越專業化,用於壓縮特定型別的資料——文字、語音、音樂、照片或影片...
資料壓縮在某些情況下很有用,因為與它所代表的未編碼資訊相比,“壓縮資料”將節省時間(在讀取和傳輸方面)和空間。許多程式設計師試圖開發新的演算法來將資料儘可能緊密地壓縮成儘可能少的位(同時仍然能夠恢復相關資訊)。然而,其他程式設計師——在測試了幾種演算法之後——故意選擇了一種與能夠提供最少壓縮位的演算法不同的演算法。他們故意犧牲一些位,以提高延遲,減少壓縮時間或減少解壓縮時間。
一些通訊系統仔細地、有意地新增少量“冗餘”——資料編碼理論華夏公益教科書有更多細節。
也有幾種資料壓縮基準可用,用於比較資料壓縮演算法——甚至有一個價值 50,000 歐元的現金獎勵,用於將一個特定的基準檔案壓縮到儘可能小的程度(當然,之後要解壓縮它)。
在這本書中,我們首先描述解壓縮器,原因有幾個:[1]
- 解壓縮例程通常比配對壓縮例程更容易理解。
- 太多的人首先編寫壓縮器,然後才發現它沒有儲存足夠的資訊來重建原始檔案。
- 一旦我們有了解壓縮器,我們通常可以單獨改進壓縮器,而無需更改檔案格式或解壓縮器。
- 許多壓縮系統只記錄和標準化解壓縮器和檔案格式。(可能是由於上述原因)。