LZW壓縮演算法

2022-01-20 04:24:22 字數 2591 閱讀 6294

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字...