簡體   English   中英

為什么霍夫曼的編碼算法比原始大小占用更多位?

[英]Why Huffman's coding algorithm takes more bit than the original size?

我給定的字符串是“Today_is_Monday”。 如果我將霍夫曼的編碼算法應用於這個字符串。 如果沒有編碼,字符串的總大小為(15*8) = 120位。 編碼后大小為(10*8 + 15 + 49) = 144位。

據我所知,霍夫曼的算法用於減小尺寸。 但是為什么編碼后的大小比原來的大呢?

我所做的更多細節如下在此處輸入圖像描述

謝謝你。

給定頻率表,霍夫曼編碼優化了消息長度。 您如何處理頻率表取決於您。

非常短消息的應用程序通常假設發送器和接收器都事先知道的 static 頻率表,因此不必發送。

需要發送頻率表的應用程序通常會執行額外的優化。 可以通過按字母順序僅傳輸每個符號的長度來傳達樹。 然后可以對長度本身進行霍夫曼編碼。

文字太短,概率分布 function看起來很均勻。 如果出現頻率(或多或少)相同,則輸入字符串非常接近隨機噪聲。 用一般的方式壓縮隨機噪聲是不可能的,壓縮很可能比輸入序列長,因為還需要添加一些元數據,比如編碼表。

相反,考慮編碼一個字符串: aaaaaaaaaaaaaaa

如果嘗試對較長的通用英文文本進行編碼,則會在某個時候注意到,編碼后的字符串大小將開始顯着短於原始文本。 這是因為編碼的序列頻率將開始產生更大的影響 - 最頻繁的字符將使用盡可能短的代碼進行編碼,並且由於它重復很多,其較短的大小將支配原始字符的大小。

沒有可逆壓縮算法可以保證壓縮所有可能的輸入。 如果有,那么您可以反復輸入它自己的 output 並最終將任何輸入文件減少到 1 位。 對於任何初始輸入文件。

因此,必須有一些輸入不能被任何特定算法壓縮。

正如其他人所解釋的那樣,您發現了霍夫曼無法壓縮的輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM