1.郝夫曼編碼是一種不定長編碼。
我們知道網路上電腦上的資料傳輸最終是一串二進位制序列,也就是0,1組成的序列.比如你要傳輸「abcd」這一串字串,那麼你就要對它進行編碼,將它轉換成二進位制序列,然後再對這串二進位制序列進行轉碼得到「abcd」.那麼顯然就肯定有乙個編碼表。編碼總的來說有兩種,一種是定長編碼,另一種是不定長編碼.定長編碼就是每個字元所佔的二進位制位長度是固定的,這樣的話解碼也容易,如果長度是2,那麼在二進位制序列每兩位就對應乙個字元,通過查詢編碼表就知道是哪個字元.不定長編碼的話見名知義,每乙個字元對應的二進位制位數並不是固定的,有可能是2位,有可能是3位。不定長編碼有個前提就是每個字元的編碼都不可以是其他字元編碼的字首,我們也叫這樣的編碼,叫字首編碼否則的話會出現歧義,例如a:001,b:0011,那麼這一串二進位制序列:0011001怎麼解碼呢,001可以對應a,但是0011也可以對應的b,那麼到底是取001還是0011來解碼呢.不定長編碼有什麼好處呢,就是在一定程度上可以節省位數.以長度2來編碼,那麼可以表示4種字元,但是如果我們只需要表達2個字元,那就沒必要用2位來表示,因為一位足以表示了.
2.郝夫曼編碼除了是不定長編碼,還可以最大程度節省位數,也就是用最短的二進位制序列來表示最多的資訊(對應郝夫曼樹的最短路徑長度).具體如下:每個字元對應郝夫曼樹的葉子結點,字元的出現頻率作為對應葉子結點的權重,為了得到最短路徑長度,也就是出現頻率高的應該盡可能短的編碼表示,左邊為0,右邊為1.
自問自答:
1.郝夫曼樹如何保證每個字元的編碼都不是其他字元編碼的字首?
每個字元對應的是郝夫曼樹的葉子結點,所以每個字元對應的在郝夫曼樹的結點都不可能出現在其它字元對應結點的路徑上.
2.怎樣保證帶權最短路徑?
郝夫曼樹的生成規則決定了這就是一棵帶權最短路徑的樹.
此篇主要是用來博主自己理解記憶的,所以排版有問題,閱讀者見諒.
哈夫曼樹和哈夫曼編碼
1.帶權最短路徑wpl 2.哈夫曼樹是wpl最小的樹,但樹不一定唯一。左右子樹交換,大於二的同權重的樹的任意組合都會影響其唯一性。3.n個葉子節點的總節點數為2n 1。4.哈夫曼樹的建立,每次將兩個權重最小的樹組合乙個大樹 小樹消失,大樹插入。這裡的存在與否依據parent標記 直到還有一棵樹為止。...
哈夫曼樹和哈夫曼編碼
原文參照 1.基本概念 節點之間的路徑長度 在樹中從乙個結點到另乙個結點所經歷的分支,構成了這兩個結點間的路徑上的經過的分支數稱為它的路徑長度 樹的路徑長度 從樹的 根節點到樹中每一結點的 路徑長度之和。在結點數目相同的二叉樹中,完全二叉樹的路徑長度最短。結點的權 在一些應用中,賦予樹中結點的乙個有...
哈夫曼樹和哈夫曼編碼
在一般的資料結構的書中,樹的那章後面,著者一般都會介紹一下哈夫曼 huffman 樹和哈夫曼編碼。哈夫曼編碼是哈夫曼樹的乙個應用。哈夫曼編碼應用廣泛,如jpeg中就應用了哈夫曼編碼。首先介紹什麼是哈夫曼樹。哈夫曼樹又稱最優二叉樹,是一種帶權路徑長度最短的二叉樹。所謂樹的帶權路徑長度,就是樹中所有的葉...