lzw演算法和lz78演算法在編碼方式上的不同:
步驟1: 開始時的詞典包含所有可能的根(root),當前字首p為空;
步驟3: 判斷綴-符串p+ char是否在詞典中
(1) 如果"是":p := p+ char // (用char擴充套件p) ;
(2) 如果"否":① 把代表當前字首p的碼字輸出到碼字流;
② 把綴-符串p+ char新增到詞典;
③ 令p := char //(現在p僅包含乙個字元char);
步驟4:判斷字元流中是否還有字元需要編碼
(1) 如果"是",就返回到步驟2;
(2) 如果"否"
① 把代表當前字首p的碼字輸出到碼字流;
② 結束。
開始時的詞典包含所有可能的根(root);
查詞典,輸出dictionary [cw];
步驟2:先前碼字(pw):=當前碼字(cw);
步驟3:判斷碼字流中是否還有需要解碼的碼字,
判斷dictionary [cw]是否為空(即詞典中是否已經有序號為cw的項)
(a)如果"是":
①查詞典,輸出dictionary [cw];
②prefix:=dictionary [pw] ;
③char:=first character of
dictionary[cw] ;
④新增詞典項prefix+char;
⑤pw:=cw;
(b)如果"否":
①prefix:=dictionary [pw] ;
②char:=first character of prefix;
③新增詞典項prefix+char;
④查詞典,輸出dictionary [cw];
⑤pw:=cw;
重複步驟3;
///
/// 編碼器類
///
public
static
class encoder
///
/// 將乙個條目加入詞典
///
///
///
static
void addtodic(string item, listd)
///
/// 初始化詞典
///
///
public
static
void initializedictionary(string str) /*由於lzw演算法必須有乙個初始詞典,因此在這裡將詞典初始化*/ }
} ///
/// 根據詞典條目內容查詢相應編號
///
///
///
///
static
int getdicid(string item, listd)
///
/// 執行lzw編碼演算法
///
///
public
static
void execute(string str)
else
,", getdicid(p,d));
addtodic(p + char, d);
p = char.tostring();
} }
console.write("", getdicid(p, d));
console.writeline();
} }
///
/// 解碼器類
///
public
static
class decoder
else
break;
} }
///
/// 輸入方法說明
///
static
void showinputhelp()
///
/// 根據詞典序號找出詞典內容
///
///
///
///
static
string getcontext(int id, listd)
return
string.empty;
} ///
/// 將乙個條目加入詞典
///
///
///
static
void addtodic(string item, listd)
///
/// 執行lzw解碼演算法
///
///
public
static
void execute(string str)
if (count > 1)
else }
} console.writeline();
} }
主函式**省略,執行效果如下:
本例中要編碼的字串有14個字元,壓縮後的編碼有10個數字,按實際位元組算,壓縮率為65%。
lzw壓縮演算法 VBScript中的LZW壓縮演算法
lzw壓縮演算法 介紹本文向您展示如何在vbscript中實現lzw無失真壓縮演算法。它也可以按原樣或幾乎按原樣在vba中使用。lzw演算法lzw演算法是一種壓縮技術,不會導致資料丟失。它構建了動態壓縮中使用的 和值的字典。該詞典不與壓縮檔案一起儲存,並且在壓縮後將被丟棄。在解壓縮期間,將從壓縮的資...
壓縮演算法 lzw演算法實現
壓縮演算法 lzw演算法實現 字典壓縮的基本原理 以色列人lempel與ziv發現在正文流中詞彙和短語很可能會重複出現。當出現乙個重複時,重複的序列可以用乙個短的編碼來代替。壓縮程式重複掃瞄這樣的重複,同時生成編碼來代替重複序列。隨著時間過去,編碼可以用來捕獲新的序列。演算法必須設計成壓縮程式能夠在...
LZW資料壓縮演算法
表4 15 詞典 碼字 code word 字首 prefix 1 193 a194b 255 1305 abcdefxyf01234 lzw編碼器 軟體編碼器或硬體編碼器 就是通過管理這個詞典完成輸入與輸出之間的轉換。lzw編碼器的輸入是字元流 charstream 字元流可以是用8位ascii字...