今天做了某公司的一道演算法題,是構建aaaabbbccd的哈夫曼樹,並寫出最後編碼的二進位制串。當時就想,哈夫曼樹而已啊,我才寫了一篇部落格啊。。。。搞起!結果,越搞越感覺不對勁。。。。。。。
問題所在是我把字元的阿斯克嗎當成霍夫曼樹的構架基礎,其實應該是頻次、頻次、頻次!!!!
重新做一下題:
統計頻次字元a
bcd頻次
4321
如何構建哈夫曼樹?見這篇:
cdba:10
cdb:6 a:4
cd:3 b:3
c:2
d:1
樹的左側邊是0,右側邊是1:則得出編碼置換表:字元a
bcd編碼
101000001
則源字串被壓縮為:
1111 0101 0100 0000 001不難看出,壓縮後的二進位制占用3個位元組的儲存空間(不包含字典),源字串占用11個位元組儲存空間。
// 待完善
再談哈夫曼樹之字串編碼
今天做了某公司的一道演算法題,是構建aaaabbbccd的哈夫曼樹,並寫出最後編碼的二進位制串。當時就想,哈夫曼樹而已啊,我才寫了一篇部落格啊。搞起!結果,越搞越感覺不對勁。問題所在是我把字元的阿斯克嗎當成霍夫曼樹的構架基礎,其實應該是頻次 頻次 頻次!重新做一下題 統計頻次 字元 abcd 頻次4...
哈夫曼樹編碼 字串
資料有一種結構叫做二叉樹,即每個節點至多含有兩個子樹,左子樹和右子樹。生活中類似樹結構的東西有很多,如 生活中的族譜,計算機編碼!對於給定n個權值作為n個葉子結點,構造一棵二叉樹,若帶權路徑長度達到最小,稱這樣的二叉樹為最優二叉樹,也稱為哈夫曼樹。哈夫曼樹可以用來編碼資料,如 將字串形式的資料編碼為...
哈夫曼編碼 哈夫曼樹
1.定義 哈夫曼編碼主要用於資料壓縮。哈夫曼編碼是一種可變長編碼。該編碼將出現頻率高的字元,使用短編碼 將出現頻率低的字元,使用長編碼。變長編碼的主要問題是,必須實現非字首編碼,即在乙個字符集中,任何乙個字元的編碼都不是另乙個字元編碼的字首。如 0 10就是非字首編碼,而0 01不是非字首編碼。2....