[英]Why Huffman's coding algorithm takes more bit than the original size?
給定頻率表,霍夫曼編碼優化了消息長度。 您如何處理頻率表取決於您。
非常短消息的應用程序通常假設發送器和接收器都事先知道的 static 頻率表,因此不必發送。
需要發送頻率表的應用程序通常會執行額外的優化。 可以通過按字母順序僅傳輸每個符號的長度來傳達樹。 然后可以對長度本身進行霍夫曼編碼。
文字太短,概率分布 function看起來很均勻。 如果出現頻率(或多或少)相同,則輸入字符串非常接近隨機噪聲。 用一般的方式壓縮隨機噪聲是不可能的,壓縮很可能比輸入序列長,因為還需要添加一些元數據,比如編碼表。
相反,考慮編碼一個字符串: aaaaaaaaaaaaaaa
。
如果嘗試對較長的通用英文文本進行編碼,則會在某個時候注意到,編碼后的字符串大小將開始顯着短於原始文本。 這是因為編碼的序列頻率將開始產生更大的影響 - 最頻繁的字符將使用盡可能短的代碼進行編碼,並且由於它重復很多,其較短的大小將支配原始字符的大小。
沒有可逆壓縮算法可以保證壓縮所有可能的輸入。 如果有,那么您可以反復輸入它自己的 output 並最終將任何輸入文件減少到 1 位。 對於任何初始輸入文件。
因此,必須有一些輸入不能被任何特定算法壓縮。
正如其他人所解釋的那樣,您發現了霍夫曼無法壓縮的輸入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.