哈夫曼編碼計算問題以及報文解析
已知某字串S中共有8種字元,各種字元分別出現2次、1次、4次、5次、7次、3次、4次和9次,對該字串進行哈夫曼,問該字串的編碼至少有多少位?
我們首先構造一個哈夫曼樹:
其中編碼位數就是出現 次數×編碼位(bit)
也就是2×5+1×5+4×3+5×3+7×2+3×4+4×3+9×2=98,所以該字串的編碼長度至少是98位。
這個就是帶權路徑長度,因為出現的次數就是權重,編碼位數就是節點到根節點的層數。
編碼所佔的位數也就是路徑長度。
還會有一下考法;
葉子節點帶代表字元D={asd;}
讓你寫出{asd;das;ds;ad;}的編碼:這其實就是用01表示。
或者給你說電文是:“101110101010101000010100101”;讓你寫出對用的譯文是什麼?
這也就是發報是滴~滴滴滴。用聲音長短代表0,1,01,10等等,發報越複雜說明指定的越多,希望理解。
歡迎留言指正。
相關推薦
哈夫曼編碼計算問題以及報文解析
已知某字串S中共有8種字元,各種字元分別出現2次、1次、4次、5次、7次、3次、4次和9次,對該字串進行哈夫曼,問該字串的編碼至少有多少位? 我們首先構造一個哈夫曼樹: 其中編碼位數就是出現 次數×編碼位(bit) 也就是2×5+1×5+4×3+5×3+
哈夫曼編碼計算帶權路徑長度問題
哈夫曼樹,又稱最優二叉樹,是一類帶權路徑長度最短的樹。 也就是根節點到節點的中的長度最小,當然條件就是,每條路徑都是有權重的, 所謂樹的帶權路徑長度,就是樹中所有的葉結點的權值乘上其到根結點的 路徑長度(若根結點為0層,葉結點到根結點的路徑長度為葉結點的層數)。樹的帶
計算哈夫曼編碼長度
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#
哈夫曼編碼的長度計算問題
問題是: 已知某字串S中共有8種字元,各種字元分別出現2次、1次、4次、5次、7次、3次、4次和9次,對該字串進行哈夫曼,問該字串的編碼至少有多少位? 我們首先構造一個哈夫曼樹: 其中編碼位
資料結構(15)--哈夫曼樹以及哈夫曼編碼的實現
參考書籍:資料結構(C語言版)嚴蔚敏吳偉民編著清華大學出版社 1.哈夫曼樹 假設有n個權值{w1, w2, ..., wn},試構造一棵含有n個葉子結點的二叉樹,每個葉子節點帶權威wi,則其中帶權路徑長度WPL最小的二叉樹叫做最優二叉樹或者哈夫曼樹。 特點:
資料結構圖文解析之:哈夫曼樹與哈夫曼編碼詳解及C++模板實現
0. 資料結構圖文解析系列 1. 哈夫曼編碼簡介 哈夫曼編碼(Huffman Coding)是一種編碼方式,也稱為“赫夫曼編碼”,是David A. Huffman1952年發明的一種構建極小多餘編碼的方法。 在計算機資料處理中,霍夫曼編碼使用變長編碼表對源符號進行編碼,出現頻率較高的源符號採用較短的編碼,
哈夫曼編碼(Huffman coding)的那些事,(編碼技術介紹和程序實現)
信號 truct 依次 while 交換 需要 .text 示例 system 前言 哈夫曼編碼(Huffman coding)是一種可變長的前綴碼。哈夫曼編碼使用的算法是David A. Huffman還是在MIT的學生時提出的,並且在1952年發表了名為《
哈夫曼編碼解碼 C++實現
錯誤 urn using 過程 簡單 cin n) struct ren 哈夫曼編碼是一個通過哈夫曼樹進行的一種編碼,一般情況下,以字符:‘0’與‘1’表示。編碼的實現過程很簡單,只要實現哈夫曼樹,通過遍歷哈夫曼樹,這裏我們從每一個葉子結點開始向上遍歷,如果該結點為父節點的
哈夫曼編碼
http sdn chm cstring htc 位數 child 個數 ostream 在電文傳輸中,需要將電文中出現的每個字符進行二進制編碼。在設計編碼時需要遵守兩個原則: (1)發送方傳輸的二進制編碼,到接收方解碼後必須具有唯一性,即解碼結果與發送方發送的電文完全一樣
【BZOJ 4198】[Noi2015]荷馬史詩 哈夫曼編碼
clu tor space zoj col 具體實現 %d sca bool 合並果子加強版....... 哈夫曼樹是一種特別的貪心算法,它的作用是使若幹個點合並成一棵樹,每次合並新建一個節點連接兩個合並根並形成一個新的根,使葉子節點的權值乘上其到根的路徑長的和最短(等價
轉載:哈夫曼樹的構造和哈夫曼編碼(C++代碼實現)
作者 pos blank 字符 element start man null == 作者:qiqifanqi 原文:http://blog.csdn.net/qiqifanqi/article/details/6038822 #include<stdio.h>
【視頻編解碼·學習筆記】7. 熵編碼算法:基礎知識 & 哈夫曼編碼
html 節點 表示 效率 article tchar vector nod code 一、熵編碼概念: 熵越大越混亂 信息學中的熵: 用於度量消息的平均信息量,和信息的不確定性 越是隨機的、前後不相關的信息,其熵越高 信源編碼定理: 說明了香農熵越信源符號概率之間的
哈夫曼編碼大全
cad 節點 pos ada 哈夫曼 描述 多少 一個數 關於 題目: 哈夫曼編碼大全 描述: 關於哈夫曼樹的建立,編碼,解碼。 輸入 第一行輸入數字N,代表總共有多少個字符以及權值 第二第三行分別是一行字符串,以及每個字符對應的權值 接下來輸入一個數M,表示接下來有M
5.2哈夫曼樹——哈夫曼樹與哈夫曼編碼
node i++ insert 編碼 urn all IV right style #include <stdio.h> #include <stdlib.h> struct TreeNode{ int Weight; Huffm
HDU 1053 Entropy(哈夫曼編碼 貪心+優先隊列)
req else archive there format printf mod imp phi 傳送門: http://acm.hdu.edu.cn/showproblem.php?pid=1053 Entropy Time Limit: 2000/1000 MS (Ja
bzoj 4198 [ Noi 2015 ] 荷馬史詩 —— 哈夫曼編碼(k叉哈夫曼樹)
log mes com can rest opera 編碼 type pro 題目:https://www.lydsy.com/JudgeOnline/problem.php?id=4198 第一次寫哈夫曼樹!看了很多博客。 哈夫曼樹 & 哈夫曼編碼:https:/
SDUT 3345 數據結構實驗之二叉樹六:哈夫曼編碼
g++ mit mil ade 入隊 一位 hat 一個 隊列 數據結構實驗之二叉樹六:哈夫曼編碼 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 字符的編碼方式有多種,除了大家
樹-哈夫曼編碼
creat ++ .com truct col sca 哈夫曼編碼 最優 序號 哈夫曼樹(最優二叉樹) 每個葉子節點都有權值,權值越大的葉節點越靠近根節點,而權值越小的葉節點越遠離根節點 建立規則: 依據給出的n個權值,選擇最小的兩個權值作為一棵新的二叉樹的左右子樹,並且新
哈夫曼編碼--貪心策略
round 心算 ase value 刪除 huffman sin fine pac 哈夫曼編碼還是在暑假時候看的,那時候並沒有看懂因為比較菜(雖然現在也是很菜的),在《趣學算法》一書中這個問題講解十分到位,我這篇博客真的是難以望其項背,只能對其進行一點借鑒和摘抄吧 哈夫曼
java使用優先級隊列實現哈夫曼編碼
哈夫曼編碼 左右 integer string enc ash 小根堆 rac sta 思路: 構建小根堆 根據小根堆實現哈夫曼樹 根據哈夫曼樹對數據進行編碼 代碼實現如下: /** * @Author: DaleyZou * @Description: 使用jav