當前位置:成語大全網 - 新華字典 - LZW算法的LZW算法

LZW算法的LZW算法

LZW算法基於轉換串表(字典)T,將輸入字符串映射成定長(通常為12位)的碼字。在12位4096種可能的代碼中,256個代表單字符,剩下3840給出現的字符串。

LZW字典中的字符串具有前綴性,即 ωK∈T=>;ωT。

LZW算法流程:

步驟1: 開始時的詞典包含所有可能的根(Root),而當前前綴P是空的;  步驟2: 當前字符(C) :=字符流中的下壹個字符;  步驟3: 判斷綴-符串P+C是否在詞典中  (1) 如果“是”:P := P+C // (用C擴展P) ;  (2) 如果“否”  ① 把代表當前前綴P的碼字輸出到碼字流;  ② 把綴-符串P+C添加到詞典;  ③ 令P := C //(現在的P僅包含壹個字符C);  步驟4: 判斷碼字流中是否還有碼字要譯  (1) 如果“是”,就返回到步驟2;  (2) 如果“否”  ① 把代表當前前綴P的碼字輸出到碼字流;  ② 結束。   具體解壓步驟如下:

(1)譯碼開始時Dictionary包含所有的根。

(2)讀入在編碼數據流中的第壹個碼字 cW(它表示壹個Root)。

(3)輸出String.cW到字符數據流Charstream。

(4)使pW=cW 。

(5)讀入編碼數 據流 的下壹個碼字cW 。

(6)目前在字典中有String.cW嗎?

YES:1)將String.cW輸出給字符數據流;

2)使P=String.pW;

3)使C=String.cW的第壹個字符;

4)將字符 串P+C添 加進Dictionray。

NO :1)使P=String.pW ;

2)使C=String.pW的第壹個字符;

3)將字符串P+C輸出到字符數據流並將其添加進Dictionray(現在它與cW相壹致)。

(7)在編碼數據 流中還有Codeword嗎?

YES:返回(4)繼 續進行 譯碼 。

NO:結束譯碼 。