演算法30 LZW演算法

2021-10-05 16:00:45 字數 1193 閱讀 5332

讀者盆友,清晨好。這裡介紹下lzw演算法。

這是上世紀70年代末至80年代初由a.lempel、j.ziv 、t.welch發明的。

本部落格**示例均來自:演算法 algorithmes forth edition

[美] robert sedgewick kevin wayne 著 謝路雲譯

package com.cmh.algorithm.str;

import edu.princeton.cs.algs4.binarystdin;

import edu.princeton.cs.algs4.binarystdout;

/** * lzw演算法壓縮

* author:起舞的日子

* w* date: 2020/4/30 23:44

*/public

class

lzw//r為檔案結束(eof)的編碼

int code = r +1;

while

(input.

length()

>0)

input = input.

substring

(t);

} binarystdout.

write

(r, w)

; binarystdout.

close()

;}public

static

void

expand()

//(未使用)檔案結束標記(eof)的前瞻字元

st[i++]=

" ";

int codeword = binarystdin.

readint

(w);

string val = st[codeword]

;while

(true

)//獲取下乙個編碼

string s = st[codeword]

;//如果前瞻字元不可用

if(i == codeword)

if(i < l)

val = s;

} binarystdout.

close()

;}}

原始碼:

LZW壓縮演算法

lzw演算法和lz78演算法在編碼方式上的不同 步驟1 開始時的詞典包含所有可能的根 root 當前字首p為空 步驟3 判斷綴 符串p char是否在詞典中 1 如果 是 p p char 用char擴充套件p 2 如果 否 把代表當前字首p的碼字輸出到碼字流 把綴 符串p char新增到詞典 令p...

壓縮演算法 lzw演算法實現

壓縮演算法 lzw演算法實現 字典壓縮的基本原理 以色列人lempel與ziv發現在正文流中詞彙和短語很可能會重複出現。當出現乙個重複時,重複的序列可以用乙個短的編碼來代替。壓縮程式重複掃瞄這樣的重複,同時生成編碼來代替重複序列。隨著時間過去,編碼可以用來捕獲新的序列。演算法必須設計成壓縮程式能夠在...

lzw壓縮演算法 VBScript中的LZW壓縮演算法

lzw壓縮演算法 介紹本文向您展示如何在vbscript中實現lzw無失真壓縮演算法。它也可以按原樣或幾乎按原樣在vba中使用。lzw演算法lzw演算法是一種壓縮技術,不會導致資料丟失。它構建了動態壓縮中使用的 和值的字典。該詞典不與壓縮檔案一起儲存,並且在壓縮後將被丟棄。在解壓縮期間,將從壓縮的資...