1、概述
霍夫曼編碼是一種基於最小冗餘編碼的壓縮演算法。最小冗餘編碼是指,如果知道一組資料中符號出現的頻率,就可以用一種特殊的方式來表示符號從而減少資料需要的儲存空間。
2、定義
霍夫曼樹:給定n個權值作為n個葉子結點,構造一棵二叉樹,若帶權路徑長度達到最小,稱這樣的二叉樹為最優二叉樹,也稱為哈夫曼樹(huffman tree)。哈夫曼樹是帶權路徑長度最短的樹,權值較大的結點離根較近。結合第2節中的字串,將字串出現頻率作為權值。
3.構造流程
(1)選取權值最小和次小的節點作為左右子樹,構造一棵二叉樹。
(2)將步驟1構造的二叉樹的根節點的權值設定為,左右子樹之和。
(3)去除步驟1中已經選過的節點,將新的二叉樹的根節點加入至待選集合
(4)繼續重複步驟1,直至僅剩乙個元素未選中。
參考:
資料結構 霍夫曼樹
帶權路徑長度最小的樹,常用於資料通訊中。構造霍夫曼樹演算法 設給定的一組權值為,據此生成森林f f 中的沒棵二叉樹只有乙個帶權為w1的根節點 i 1,2,n 在f中選取兩棵根節點的權值最小和次小的二叉樹作為左右構造一棵新的二叉樹,新二叉樹根節點的權值為其左 右子樹根節點的權值之和。在f中刪除這兩棵最...
資料結構 六 霍夫曼樹與編碼
1 演算法流程 1 構建霍夫曼樹 自底向上 根據統計頻率構建霍夫曼樹 a 把所有的節點扔進排序佇列queue 中 b 從queue 選擇選擇前面兩個最小的元素a b,把最小的樹 a作為左節點,把最小的 b作為右節點,以此構建父節點 c c的頻率值為 a b的頻率值 然後把a b從佇列刪除 把 c節點...
資料結構與演算法 霍夫曼樹 霍夫曼編碼和解碼
找出存放一串字元所需的最少的二進位制編碼。首先統計出每種字元出現的頻率,即 概率 權值。例如 頻率表 a 60,b 45,c 13 d 69 e 14 f 5 g 3 第一步 找出字元中頻率最小的兩個,小的在左邊,大的在右邊,組成二叉樹。在頻率表中刪除此次找到的兩個數,並加入此次最小兩個數的頻率和。...