Loading AI tools
將符號編碼為不同長度字碼之編碼法 来自维基百科,自由的百科全书
編碼理論中的可變長度編碼(英語:variable-length code)指將源「符號」對映到可變位元的編碼。電腦科學中的等效概念是位元串。
此條目翻譯品質不佳。 (2023年10月26日) |
此條目可能包含原創研究。 |
可變長度編碼允許源資訊被以零誤(無失真資料壓縮)的結果完成壓縮和解壓縮,且仍可讀取每個符號。通過妥善的編碼策略,能將獨立同分布的源資訊壓縮到幾乎任意接近其熵的程度。而固定長度編碼方法只能對巨量資料塊進行資料壓縮,且任何超過可能性總數的對數的壓縮都存在有限的失敗概率,儘管這可能任意小。
知名的可變長度編碼策略包括霍夫曼編碼、Lempel-Ziv編碼、算術編碼和CAVLC(上下文自適應可變長度編碼)。
對代碼的擴充指通過將源序列的每個符號與原始碼產生的相應碼字連接而獲得的有限長度源序列到有限長度位元串的對映。
使用形式語言理論中的術語,精確的數學定義如下:令和是兩個有限集,分別稱為源字母表和目標字母表。一個代碼表示一個全函式[1],將中的每一個符號對映到上的符號序列,並將擴充到和的同態 ,這自然地對映了每個源符號序列到目標序列,稱為它的擴充。
可變長度編碼可以按照通用性遞減的順序嚴格巢狀,如非奇異碼、唯一可解碼代碼和字首代碼。字首碼始終是唯一可解碼的,後兩者始終是非奇異的:
如果每個源符號對映到不同的非空位元串,則代碼是非奇異的,即從源符號到位元串的對映是單射。
如果代碼的擴充是非奇異的 ,則該代碼是唯一可解碼的。給定的代碼是否是唯一可解碼的可以使用Sardinas-Patterson 演算法來確定。
如果對映中沒有目標位元串是同一對映中不同源符號的目標位元串的字首,則該代碼是字首碼。這意味著符號可以在接收到整個碼字後立即解碼。此概念的其他常用名稱包括無字首代碼、瞬時代碼或上下文無關代碼。
符號 | 碼字 |
---|---|
a | 0 |
b | 10 |
c | 110 |
d | 111 |
字首碼的一個特例是塊碼。這裡所有碼字必須具有相同的長度。後者在信源編碼中不是很有用,但通常在頻道編碼中用作正向錯誤校正。
字首碼的另一個特殊情況是LEB128和可變長度數量(VLQ) 碼,它們將任意大的整數編碼為八位位組序列,即每個碼字都是 8 位的倍數。
可變長度碼的優點在於,不太可能出現的源符號會分配到較長的碼字,而常出現的源符號會分配到較短的碼字,從而給出較低的預期碼字長度。對於上面的例子,如果 (a, b, c, d) 出現的概率為 ,使用上述編碼表示源符號的預期位數為:
由於該源的熵為每個符號 1.7500 位,因此該編碼能儘可能地壓縮源,以便可以以零錯誤恢復源。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.