哈夫曼演算法編碼原理與應用

2021-04-13 21:46:29 字數 1542 閱讀 6581

演算法原理:

ht首先被提出來,是為了解決這樣的問題:對於n

種資料(比如

5種資料:a、

b、c、

d、e),在出現的頻率已

知的情況下(比如分別出現了3、

5、2、

6、4次),如何用不等長的

01串來分別表示它們,使

01串的總長度最短。

比如原始串:

abadbcbdabedbdedcede

對於這個問題,首先得到:任何乙個

01串都不能是其他

01串的字首

。也就是說,如果用

10」來表示a

,那麼其他

01串就不能以

10」開頭。

建立01

串的步驟如下:

首先找到出現最少的兩個資料(a、

c),分別以它們為左右子樹,

建立乙個二叉樹。並將它們出現次數之和作為根節點:

1) 5     5b    6d    4e

/  /

3a   

2c然後從剩下的

4個數舉重找到兩個最小的,做同上的操作,知道只

剩乙個資料為止:

2) 5            9          6d

/ /          /   /

3a

2c5b 4e

3) 11            9

/   /           /   /

5    6d   5b 4e

/ /

3a

2c4) 20

/         /

11          9

/   /            /   /

5    6d    5b   4e

/ /

3a

2c最後從根節點開始,每個左子樹填

0,右子樹填1:

root

/        /

0           1

/ /           / /

0   1d   0b 1e

/    /

0a

1c這樣每個資料對應的

01串就是從根節點到資料所在的葉子節點的路

徑:a: 000

b:

10 c: 001

d: 01

e: 11

這樣原始串

abadbcbdabedbdedcede

就成了:

000100000110001100100010110110011101001110111

壓縮:把

256個

ascii

碼看作256

種資料,分析它們出現的次數,建立ht,

得到256個01

串。用這

256個

01串去替換原來的字元並按照二進位制處理,

就可以得到壓縮後的檔案了。

哈夫曼演算法編碼原理與應用

概述 2 從左到右把上述頻率按從小到大的順序排列。3 每一次選出最小的兩個值,作為二叉樹的兩個葉子節點,將和作為它們的根節點,這兩個葉子節點不再參與比較,新的根節點參與比較。4 重複 3 直到最後得到和為1的根節點。將形成的二叉樹的左節點標0,右節點標1。把從最上面的根節點到最下面的葉子節點路徑中遇...

哈夫曼演算法編碼原理與應用

演算法原理 ht首先被提出來,是為了解決這樣的問題 對於n種資料 比如5種資料 a b c d e 在出現的頻率已知的情況下 比如分別出現了3 5 2 6 4次 如何用不等長的01串來分別表示它們,使01串的總長度最短。比如原始串 abadbcbdabedbdedcede 對於這個問題,首先得到 任...

哈夫曼編碼原理

哈弗曼編碼幾乎是所有壓縮演算法的基礎,其實這個演算法並不複雜,簡單的理解就是,如何用更短的bit來編碼資料。我們知道普通的編碼都是定長的,比如常用的ascii編碼,每個字元都是8個bit 字元編碼 a00101001 b00101010 c00101011 這樣,計算機就能很方便的把由0和1組成的資...