精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

算法科普:有趣的霍夫曼編碼

算法與數據結構 ? 來源:楊湘祁 ? 作者:電子發燒友 ? 2019-03-14 19:24 ? 次閱讀

霍夫曼編碼 ( Huffman coding ) 是一種可變長的前綴碼。霍夫曼編碼使用的算法是 David A. Huffman 還是在MIT 的學生時提出的,并且在 1952 年發表了名為《 A Method for the Construction of Minimum-Redundancy Codes 》的文章。

編碼這種編碼的過程叫做霍夫曼編碼,它是一種普遍的熵編碼技術,包括用于無損數據壓縮領域。

霍夫曼編碼過程

霍夫曼編碼使用一種特別的方法為信號源中的每個符號設定二進制碼。出現頻率更大的符號將獲得更短的比特,出現頻率更小的符號將被分配更長的比特,以此來提高數據壓縮率,提高傳輸效率。

以字符串 ” ABAABACD “ 為例進行說明。

接下來,按照字符出現的比例從高往低對字符進行排序。

圖 1

然后,按出現比例低的順序查找兩個字母。在這種情況下,它是 “ C ” 12.5% 和 “ D ” 12.5% 。

通過一條線連接兩個字母拼構成一個樹狀結果。將兩個字母合并為 “ C 或 D”,并將出現比率相加起來。

動畫 2

按照同樣的操作,將合并后的 “ C 或 D ” 視為一個字符,重復相同的操作。

在 “ A " "B" " C 或 D " 三個中,按照出現比例低的順序查找兩個字母。

圖 3

圖 4

這樣,所有的字母都變成了 " A 或 B 或 C 或 D" ,出現的比率為 100% 。

圖 4 就是霍夫曼編碼的樹結構。

接下來再次顯示各個字母出現的比率,同時使用 0 和 1 進行編碼,代碼 0 和 1 分別分配給上下延伸的分支。

圖 5

分配完畢后,從樹的根部遍歷每個字符并確定相應的代碼。

在 " A " 的情況下,被分配的代碼為" 0 "

在 " B " 的情況下,被分配的代碼為 " 10 "

在 " C " 的情況下,被分配的代碼為 " 110 "

在 " D " 的情況下,被分配的代碼為 " 111 "

動畫 6

就這樣,通過這樣的編碼規則, " ABAABACD " 的二進制編碼就變成了 " 01000100110111 ",只需要 14 個比特就能表示,比單純的使用 2 比特表示一個字符縮短了很多。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4600

    瀏覽量

    92649
  • 編碼
    +關注

    關注

    6

    文章

    935

    瀏覽量

    54765

原文標題:算法科普:有趣的霍夫曼編碼

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Huffman壓縮算法概述和詳細流程

    Huffman壓縮算法是一種基于字符出現頻率的編碼算法,通過構建Huffman樹,將出現頻率高的字符用短編碼表示,出現頻率低的字符用長編碼
    的頭像 發表于 10-21 13:48 ?180次閱讀

    短文6:關于功率因素的有趣問答

    2個關于功率因素的有趣問答。
    的頭像 發表于 09-23 12:22 ?166次閱讀

    科普EEPROM 科普 EVASH Ultra EEPROM?科普存儲芯片

    科普EEPROM 科普 EVASH Ultra EEPROM?科普存儲芯片
    的頭像 發表于 06-25 17:14 ?510次閱讀

    電感科普篇:電感的特性有哪些?

    電感科普篇:電感的特性有哪些?
    的頭像 發表于 06-16 10:31 ?985次閱讀

    【RTC程序設計:實時音視頻權威指南】音視頻的編解碼壓縮技術

    音視頻所載有的信息在通過傳輸的時候就需要壓縮編碼。 其中,文本壓縮是指通過使用各種算法和技術,將文本數據表示為更緊湊的形式,以減少存儲空間。 霍夫曼編碼是一種無損壓縮
    發表于 04-28 21:04

    FPGA壓縮算法有哪些

    在圖像壓縮算法中可以采用哈夫曼編碼的方式對編碼冗余的信息進行壓縮,可以采用預測的方式來減少像素間冗余,可以采用量化的方式完成心理視覺冗余信息的去除
    的頭像 發表于 04-15 11:48 ?574次閱讀
    FPGA壓縮<b class='flag-5'>算法</b>有哪些

    開關電源短路的測試方法科普

    開關電源是否短路可以用電流表、萬用表和示波器進行檢測。如果發現開關電源短路,要及時排查造成短路的因素,并及時修復或更換,解決短路問題。
    的頭像 發表于 03-07 16:14 ?1952次閱讀

    哈夫曼編碼怎么算 哈夫曼編碼左邊是0還是1

    哈夫曼編碼是一種基于頻率的變長編碼方式,常用于數據壓縮和信息傳輸領域。它是由美國數學家大衛·哈夫曼在1952年發明的,被廣泛應用于無損壓縮領域。 哈夫曼編碼算法的基本思想是根據字符出現
    的頭像 發表于 01-30 11:27 ?2610次閱讀

    科普小貼士】什么是pn結?

    科普小貼士】什么是pn結?
    的頭像 發表于 12-13 15:06 ?2406次閱讀
    【<b class='flag-5'>科普</b>小貼士】什么是pn結?

    科普小貼士】什么是雙極晶體管(BJT)?

    科普小貼士】什么是雙極晶體管(BJT)?
    的頭像 發表于 12-13 14:38 ?1288次閱讀
    【<b class='flag-5'>科普</b>小貼士】什么是雙極晶體管(BJT)?

    科普小貼士】BJT和MOSFET的差異

    科普小貼士】BJT和MOSFET的差異
    的頭像 發表于 12-13 14:21 ?1049次閱讀
    【<b class='flag-5'>科普</b>小貼士】BJT和MOSFET的差異

    科普小貼士】什么是光耦?

    科普小貼士】什么是光耦?
    的頭像 發表于 12-08 17:06 ?631次閱讀
    【<b class='flag-5'>科普</b>小貼士】什么是光耦?

    科普小貼士】MOSFET的性能:雪崩能力

    科普小貼士】MOSFET的性能:雪崩能力
    的頭像 發表于 12-07 16:46 ?979次閱讀
    【<b class='flag-5'>科普</b>小貼士】MOSFET的性能:雪崩能力

    科普】什么是晶圓級封裝

    科普】什么是晶圓級封裝
    的頭像 發表于 12-07 11:34 ?1487次閱讀
    【<b class='flag-5'>科普</b>】什么是晶圓級封裝

    關于半導體存儲的最強入門科普

    關于半導體存儲的最強入門科普
    的頭像 發表于 11-30 17:16 ?972次閱讀
    關于半導體存儲的最強入門<b class='flag-5'>科普</b>