作業11 最優字首碼

2021-10-07 05:46:31 字數 449 閱讀 1370

哈夫曼編碼:

兩個結構體,a用來儲存樹節點

b儲存節點鍊錶:

輸入資料儲存到a結構體指標陣列,隨後按照權值排序;

(1)將陣列中的指標插入到b結構體組成的鍊錶中;

(2)取煉表前兩個節點的a元素,合併成新的乙個b,構成乙個新的b節點c,將c公升序插入到鍊錶中;

(3)煉表頭結點右移兩位;

重複1,2,3操作直到鍊錶中只剩乙個節點

深搜此節點就可以直接輸出哈夫曼編碼;

t(n)=o(n^2)

排序o(nlogn),構建哈夫曼樹o(n^2),深搜o(n/2)

作業11 最優字首碼

問題 給定字符集 c 和每個字元的頻率f xi 求關於 c 的乙個最優字首碼。構造最優字首碼的貪心演算法就是哈夫曼演算法 huffman 哈夫曼樹的基本思想 選擇權值小的葉子離根距離遠些。實現 第一步 以每個結點作為根,構造只有乙個根結點的n棵二叉樹,根的權值就是結點的權。第二步 在所有二叉樹中選擇...

演算法分析與設計 作業11 最優字首碼

碼字 q表示字元a,b,c,d 同一序列 0100001 產生兩種解碼 產生歧義 01 00 001 010 00 01 二元字首碼 任何字元的 不能作為其他字元 的字首 利用二元字首碼解碼 從第乙個字元開始依次讀入每個字元 0或1 如果發現讀到的字串與某個碼字相等,就將這個子串譯作對應的碼字 然後...

最優字首碼問題

構造最優字首碼的貪心演算法就是哈夫曼演算法 哈夫曼編碼 對於一顆具有n個葉子的哈夫曼樹,若對樹中的每個左分支賦予0,右分支賦予1,則從根到每個葉子的路徑上,各分支的賦值分別構成乙個二進位制串,該二進位制串就成為哈夫曼編碼。哈夫曼樹滿足兩條性質 性質證明如下 參考自 嚴蔚敏 資料結構教材 q c 頻率...