fbpx
维基百科

范氏霍夫曼編碼

範式霍夫曼編碼(Canonical Huffman Code)是一種特殊的霍夫曼編碼,最早由Schwartz(1964)所提出。

資料的編解碼運作方式中,以霍夫曼編碼來舉例,編解碼器的其中一方必須要知道霍夫曼樹的結構資訊,以便還原。所以其中一方必須儲存或傳輸霍夫曼樹。傳統的霍夫曼編碼使用樹狀模型編碼,給出現機率或頻率較高的符號(Symbol)較短的編碼,以提高壓縮率。但是這個方式造成兩個極大的缺點,第一,每一個樹的節點都要儲存有關它的父節點與子節點等等相關資訊,如果符號集合的數量包含許多不同機率的符號,記憶體的負荷量會明顯增大許多。第二,霍夫曼樹的追蹤需要耗費極大的運算量。所以基於以上兩個論點,傳統的霍夫曼編碼是一種極為消耗儲存空間且沒有效率的方式。

而範式霍夫曼編碼修正了這些缺點,藉由一些原則以達成利用較少的數據便能還原霍夫曼編碼的功能。範式霍夫曼編碼要求相同長度編碼必須是連續的,例如:長度為4的編碼0001,其他相同長度的編碼必須為0010、0011、0100...等等。為了盡可能降低儲存空間,編碼長度為 的第一個符號可以從編碼長度為 的最後一個符號所得知,即 ,例如:從長度為3的最後一個編碼100,可推知長度為4的第一個編碼為1010。最後,最小編碼長度的第一個編碼必須從0開始。範式霍夫曼編碼通過這些原則,便可以從每個編碼還原整個霍夫曼編碼樹。

演算法 编辑

假設我們有一組霍夫曼編碼與其相對應的符號:

F:000
O:001
R:100
G:101
E:01
T:11


首先我們先對符號進行排序,排序方式由

1. 編碼長度短至長排列
2. 字母在英文單字中的次序
E:01
T:11
F:000
G:101
O:001
R:100


接著,照下列方式依序給予新的編碼:

1. 第一個符號的編碼方式是依照符號的編碼長度給予相同長度的'0'值
2. 對接下來的符號的編碼+1,保證接下來的編碼大小都大於之前
3. 如果編碼較長,位元左移一位並補0
E:01 → 00 按照1. 
T:11 → 01 依照2.
F:000 → 100 依照2.&3.
G:101 → 101 依照2.
O:001 → 110 依照2.
R:100 → 111 依照2.


依照上述演算法將霍夫曼碼變成範式霍夫曼碼。

而解碼的方式可由:

1. 范式霍夫曼碼的順序(後面編碼大小必定大於前面)
2. 編碼長度為   的第一個符號可以從編碼長度為   的最後一個符號所得知,即  





范氏霍夫曼編碼, 範式霍夫曼編碼, canonical, huffman, code, 是一種特殊的霍夫曼編碼, 最早由schwartz, 1964, 所提出, 資料的編解碼運作方式中, 以霍夫曼編碼來舉例, 編解碼器的其中一方必須要知道霍夫曼樹的結構資訊, 以便還原, 所以其中一方必須儲存或傳輸霍夫曼樹, 傳統的霍夫曼編碼使用樹狀模型編碼, 給出現機率或頻率較高的符號, symbol, 較短的編碼, 以提高壓縮率, 但是這個方式造成兩個極大的缺點, 第一, 每一個樹的節點都要儲存有關它的父節點與子節點等等相關資訊. 範式霍夫曼編碼 Canonical Huffman Code 是一種特殊的霍夫曼編碼 最早由Schwartz 1964 所提出 資料的編解碼運作方式中 以霍夫曼編碼來舉例 編解碼器的其中一方必須要知道霍夫曼樹的結構資訊 以便還原 所以其中一方必須儲存或傳輸霍夫曼樹 傳統的霍夫曼編碼使用樹狀模型編碼 給出現機率或頻率較高的符號 Symbol 較短的編碼 以提高壓縮率 但是這個方式造成兩個極大的缺點 第一 每一個樹的節點都要儲存有關它的父節點與子節點等等相關資訊 如果符號集合的數量包含許多不同機率的符號 記憶體的負荷量會明顯增大許多 第二 霍夫曼樹的追蹤需要耗費極大的運算量 所以基於以上兩個論點 傳統的霍夫曼編碼是一種極為消耗儲存空間且沒有效率的方式 而範式霍夫曼編碼修正了這些缺點 藉由一些原則以達成利用較少的數據便能還原霍夫曼編碼的功能 範式霍夫曼編碼要求相同長度編碼必須是連續的 例如 長度為4的編碼0001 其他相同長度的編碼必須為0010 0011 0100 等等 為了盡可能降低儲存空間 編碼長度為 j displaystyle j 的第一個符號可以從編碼長度為 j 1 displaystyle j 1 的最後一個符號所得知 即 c j 2 c j 1 1 displaystyle c j 2 c j 1 1 例如 從長度為3的最後一個編碼100 可推知長度為4的第一個編碼為1010 最後 最小編碼長度的第一個編碼必須從0開始 範式霍夫曼編碼通過這些原則 便可以從每個編碼還原整個霍夫曼編碼樹 演算法 编辑假設我們有一組霍夫曼編碼與其相對應的符號 F 000 O 001 R 100 G 101 E 01 T 11 首先我們先對符號進行排序 排序方式由 1 編碼長度短至長排列和 2 字母在英文單字中的次序E 01 T 11 F 000 G 101 O 001 R 100 接著 照下列方式依序給予新的編碼 1 第一個符號的編碼方式是依照符號的編碼長度給予相同長度的 0 值 2 對接下來的符號的編碼 1 保證接下來的編碼大小都大於之前 3 如果編碼較長 位元左移一位並補0E 01 00 按照1 T 11 01 依照2 F 000 100 依照2 amp 3 G 101 101 依照2 O 001 110 依照2 R 100 111 依照2 依照上述演算法將霍夫曼碼變成範式霍夫曼碼 而解碼的方式可由 1 范式霍夫曼碼的順序 後面編碼大小必定大於前面 2 編碼長度為 j displaystyle j nbsp 的第一個符號可以從編碼長度為 j 1 displaystyle j 1 nbsp 的最後一個符號所得知 即 c j 2 c j 1 1 displaystyle c j 2 c j 1 1 nbsp 取自 https zh wikipedia org w index php title 范氏霍夫曼編碼 amp oldid 53858379, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。