0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

講解霍夫曼編碼提出的思路歷程

LiveVideoStack ? 來源:Reducible ? 作者:Reducible ? 2022-05-18 14:28 ? 次閱讀

視頻詳細(xì)講解了霍夫曼編碼提出的思路歷程。

目錄

故事背景

思路歷程

通信系統(tǒng)示意

衡量信息

編碼和熵的關(guān)系

香農(nóng)-馮諾編碼

霍夫曼的改進(jìn)

故事背景1951 年,麻省理工學(xué)院的一名研究生 David Huffman 在 Robert Fano 的信息論課程上名列前茅。Fano 教授讓學(xué)生們?cè)谄谀┛荚嚭蛯W(xué)期論文間做出選擇,年輕的 Huffman 在一開始就選擇了學(xué)期論文。論文的題目如圖 1 所示,給定一組數(shù)字或符號(hào),找到最有效的方法來使用二進(jìn)制碼表示它們。

dc71761e-d63f-11ec-bce3-dac502259ad0.png

圖 1 Huffman 的學(xué)期論文題目

在基礎(chǔ)層面上,這是一個(gè)數(shù)據(jù)壓縮問題。事實(shí)上你在計(jì)算機(jī)上看到的文本和圖像本質(zhì)上都是一組字母、數(shù)字或符號(hào),如果將其歸結(jié)為最簡單的表示形式,那么它們其實(shí)都是一組 0 和 1 的組合,每個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)類型都有一個(gè)標(biāo)準(zhǔn)的位表示。這個(gè)問題的本質(zhì)是將它們壓縮成盡可能少的位數(shù)。這是一個(gè)自計(jì)算出現(xiàn)以來就存在的問題,但 Fano 沒有告訴學(xué)生的是,這在當(dāng)時(shí)是信息論和數(shù)據(jù)壓縮領(lǐng)域的一個(gè)未解決的問題。Huffman 在研究生時(shí)解決了這個(gè)問題,他的解決方案就是大名鼎鼎的霍夫曼編碼算法。

dc95d27a-d63f-11ec-bce3-dac502259ad0.png

圖 2 數(shù)據(jù)壓縮問題

思路歷程通信系統(tǒng)示意在一個(gè)通信系統(tǒng)中,我們通常有一個(gè)信息發(fā)送方和信息接受方。發(fā)送方想要通過網(wǎng)絡(luò)向接受方發(fā)送一些原始信息,但在網(wǎng)絡(luò)中唯一有意義的信息是二進(jìn)制比特。因此,發(fā)送方必須根據(jù)符號(hào)和二進(jìn)制代碼間的某種映射對(duì)原始信息進(jìn)行編碼。而接收方需要對(duì)二進(jìn)制代碼進(jìn)行解碼以恢復(fù)原始信息。

dcb25e04-d63f-11ec-bce3-dac502259ad0.png

圖 3 通信系統(tǒng)示意圖

編碼方法一般針對(duì)從原始信息到二進(jìn)制碼的映射進(jìn)行優(yōu)化,從原始信息到二進(jìn)制碼的映射有一些內(nèi)在要求。一是每個(gè)符號(hào)必須被映射到唯一的二進(jìn)制碼,二是接收方必須能夠準(zhǔn)確解碼出原始信息。霍夫曼編碼算法完全符合這些要求。

衡量信息量對(duì)數(shù)據(jù)進(jìn)行壓縮時(shí),我們需要考慮一種平衡。如果使用太多的比特表示符號(hào),那么會(huì)導(dǎo)致冗余;如果使用太少的比特表示,則會(huì)導(dǎo)致信息丟失,因此最優(yōu)的無損壓縮算法應(yīng)該在兩者之間找到平衡。那么我們首先需要知道在不丟失原始信息的情況下,最大的壓縮率是多少。對(duì)于這個(gè)問題,我們可以理解為,需要找到在原始信息中包含的真正的信息量是多少。那我們?nèi)绾魏饬啃畔⒘康亩嗌倌?

dcedc78c-d63f-11ec-bce3-dac502259ad0.png

圖 4 如何衡量信息量

一句話中包含的信息量與文字的長度并沒有直接的關(guān)聯(lián)。如圖 5 所示,對(duì)于這兩句話來說,顯然在沙哈拉沙漠下雪所包含的信息量更大,因?yàn)樵谏衬卵┑母怕蕵O小。因此可以想到,事件相關(guān)的信息量與事件發(fā)生的概率有很大的關(guān)系。

dd3df4aa-d63f-11ec-bce3-dac502259ad0.png

圖 5 信息量例子

香農(nóng)根據(jù)信息的性質(zhì)總結(jié)了四個(gè)定律:

信息量的大小跟事件發(fā)生的概率反相關(guān)

信息量永遠(yuǎn)大于等于 0,因?yàn)槭录陌l(fā)生不會(huì)導(dǎo)致信息損失

如果一件事發(fā)生的概率是 100%,那么它不包含任何信息量

如果兩個(gè)不相關(guān)事件被分別觀察到,那么它包含的信息量應(yīng)該是這兩個(gè)事件單獨(dú)信息量的和

香農(nóng)根據(jù)這四個(gè)定律給出了自信息的定義。當(dāng)信息以 bit 為單位時(shí),log 函數(shù)的底數(shù)取 2。

dd8492e8-d63f-11ec-bce3-dac502259ad0.png

圖 6 自信息定義

但香農(nóng)更偉大的貢獻(xiàn)在于將自信息推廣到了更廣的分布上,給出了信息熵的概念,也就是著名的香農(nóng)定理。香農(nóng)定理作為信息論的基礎(chǔ),給出了衡量信息量的標(biāo)準(zhǔn)公式。

ddb9c4b8-d63f-11ec-bce3-dac502259ad0.png

圖 7 香農(nóng)定理

編碼和熵的關(guān)系當(dāng)衡量不同編碼方式的性能時(shí),我們需要計(jì)算不同編碼方式的平均字符長度。在信息論中,我們通常將符號(hào)編碼的長度根據(jù)符號(hào)出現(xiàn)的概率進(jìn)行加權(quán)求和得到平均的符號(hào)長度。香農(nóng)發(fā)現(xiàn),無論對(duì)符號(hào)進(jìn)行哪種方式的無損壓縮編碼,它的長度總是大于等于信息熵,這就是香農(nóng)的源編碼定理。

de0c53d6-d63f-11ec-bce3-dac502259ad0.png

圖 8 香農(nóng)源編碼定理

香農(nóng)-馮諾編碼香農(nóng)-馮諾編碼首先對(duì)符號(hào)按照概率進(jìn)行升序排列。然后找到最好的分割方法將符號(hào)分為兩組,使得兩組的符號(hào)概率和盡可能接近。之后對(duì)每個(gè)組進(jìn)行遞歸劃分,直到每個(gè)符號(hào)都被單獨(dú)分為一組。

de29f4ae-d63f-11ec-bce3-dac502259ad0.png

圖 9 香農(nóng)-馮諾編碼分組

分完組之后,編碼就變得很簡單了。從頭部向下,如果向左,那么對(duì)符號(hào)編碼添加 0,向右走則添加 1,最終可以得到所有符號(hào)的二進(jìn)制編碼。而且對(duì)于這個(gè)樹形圖的表示,在解碼端是不會(huì)存在歧義的。

de44cf90-d63f-11ec-bce3-dac502259ad0.png

圖 10 香農(nóng)-馮諾編碼樹形圖

霍夫曼的改進(jìn)但是香農(nóng)-馮諾編碼并不總是最優(yōu)的,在思考最小化平均符號(hào)長度時(shí),可以想到,兩個(gè)最不可能出現(xiàn)的符號(hào)應(yīng)該出現(xiàn)在二叉樹的最底部,也就是編碼長度最長的地方。這符合我們的直覺,那就是最不常出現(xiàn)的符號(hào)應(yīng)該具有更長的編碼長度。因此我們可以想到,先將兩個(gè)最不可能出現(xiàn)的符號(hào)放在最底部去構(gòu)建一個(gè)二叉樹,然后將這個(gè)二叉樹的根節(jié)點(diǎn)視作一個(gè)新的符號(hào)節(jié)點(diǎn),該符號(hào)節(jié)點(diǎn)的概率是兩個(gè)子節(jié)點(diǎn)的和。然后對(duì)剩余的符號(hào)節(jié)點(diǎn)做相同的操作,直到構(gòu)建出一個(gè)完整的二叉樹,這就是霍夫曼編碼。

dea4adca-d63f-11ec-bce3-dac502259ad0.png

圖 11 霍夫曼的改進(jìn)1

deb44410-d63f-11ec-bce3-dac502259ad0.png

圖 12 霍夫曼的改進(jìn)2

原文標(biāo)題:[基礎(chǔ)知識(shí)] 霍夫曼編碼

文章出處:【微信公眾號(hào):LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 通信系統(tǒng)
    +關(guān)注

    關(guān)注

    6

    文章

    1193

    瀏覽量

    53352
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    944

    瀏覽量

    54843

原文標(biāo)題:[基礎(chǔ)知識(shí)] 霍夫曼編碼

文章出處:【微信號(hào):livevideostack,微信公眾號(hào):LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    bcd編碼的優(yōu)缺點(diǎn) bcd編碼的常見錯(cuò)誤

    BCD(Binary-Coded Decimal)編碼是一種二進(jìn)制編碼方式,用于將十進(jìn)制數(shù)(0-9)直接轉(zhuǎn)換為二進(jìn)制形式。這種編碼方式在數(shù)字系統(tǒng)中非常常見,尤其是在需要處理數(shù)字?jǐn)?shù)據(jù)的硬件和軟件中
    的頭像 發(fā)表于 12-20 17:17 ?445次閱讀

    編碼器類型詳解:探索不同編碼技術(shù)的奧秘

    編碼器類型詳解:探索不同編碼技術(shù)的奧秘 在自動(dòng)化、機(jī)器控制和數(shù)據(jù)處理等領(lǐng)域,編碼器作為關(guān)鍵的傳感器組件,扮演著至關(guān)重要的角色。它們通過將物理位置、速度或方向轉(zhuǎn)換為電信號(hào),為各種設(shè)備提供精確的控制
    的頭像 發(fā)表于 11-19 08:58 ?682次閱讀
    <b class='flag-5'>編碼</b>器類型詳解:探索不同<b class='flag-5'>編碼</b>技術(shù)的奧秘

    增量編碼器與絕對(duì)值編碼器的區(qū)別

    增量編碼器與絕對(duì)值編碼器的區(qū)別:增量編碼器與絕對(duì)值編碼器在精度特點(diǎn)對(duì)比 增量編碼器的精度取決于脈沖的數(shù)量和測量的細(xì)分程度,通常情況下,其精度
    的頭像 發(fā)表于 11-18 16:38 ?662次閱讀
    增量<b class='flag-5'>編碼</b>器與絕對(duì)值<b class='flag-5'>編碼</b>器的區(qū)別

    磁電編碼器和光電編碼器的區(qū)別

    磁電編碼器和光電編碼器是兩種不同類型的編碼器,它們?cè)谠?、結(jié)構(gòu)、性能和應(yīng)用領(lǐng)域上都有所不同。 磁電編碼器和光電編碼器的區(qū)別 1. 引言
    的頭像 發(fā)表于 10-12 09:54 ?1187次閱讀

    直徑測量工具的發(fā)展歷程

    關(guān)鍵字:直徑測量,工業(yè)直徑測量設(shè)備,線性尺量器,光電測徑儀, 直徑測量工具的發(fā)展歷程是一個(gè)悠久且不斷創(chuàng)新的過程,它隨著科學(xué)技術(shù)的進(jìn)步而不斷演變。以下是直徑測量工具發(fā)展歷程的詳細(xì)概述: 一、古代測量
    發(fā)表于 10-10 16:55

    監(jiān)控平臺(tái)設(shè)計(jì)思路

    電子發(fā)燒友網(wǎng)站提供《監(jiān)控平臺(tái)設(shè)計(jì)思路.pptx》資料免費(fèi)下載
    發(fā)表于 10-09 11:18 ?0次下載

    電感技術(shù)的講解

    詳細(xì)講解電感的原理及計(jì)算
    的頭像 發(fā)表于 09-06 02:07 ?2206次閱讀
    電感技術(shù)的<b class='flag-5'>講解</b>

    NAND閃存的發(fā)展歷程

    NAND閃存的發(fā)展歷程是一段充滿創(chuàng)新與突破的歷程,它自誕生以來就不斷推動(dòng)著存儲(chǔ)技術(shù)的進(jìn)步。以下是對(duì)NAND閃存發(fā)展歷程的詳細(xì)梳理,將全面且深入地介紹其關(guān)鍵節(jié)點(diǎn)和重要進(jìn)展。
    的頭像 發(fā)表于 08-10 16:32 ?1310次閱讀

    GPT的定義和演進(jìn)歷程

    GPT,全稱Generative Pretrained Transformer,是OpenAI公司在自然語言處理(NLP)領(lǐng)域的一項(xiàng)重大創(chuàng)新。這一模型不僅推動(dòng)了AI技術(shù)的邊界,還深刻影響了我們與機(jī)器交互的方式。本文將從GPT的定義、來源、演進(jìn)歷程以及其在各個(gè)領(lǐng)域的應(yīng)用和影響等方面進(jìn)行深度剖析。
    的頭像 發(fā)表于 07-10 10:41 ?1102次閱讀

    PLC如何判斷編碼器正反轉(zhuǎn)

    器的工作原理、輸出信號(hào)特性以及PLC編程方法等方面,詳細(xì)闡述PLC如何判斷編碼器的正反轉(zhuǎn),并提供相應(yīng)的編程思路和實(shí)現(xiàn)方法。
    的頭像 發(fā)表于 06-17 09:31 ?2245次閱讀

    增量編碼器和絕對(duì)值編碼器的區(qū)別

    在工業(yè)自動(dòng)化和精密測量領(lǐng)域,編碼器是不可或缺的關(guān)鍵設(shè)備。編碼器能夠?qū)C(jī)械位移轉(zhuǎn)換為電信號(hào),以便于計(jì)算機(jī)或其他數(shù)字系統(tǒng)進(jìn)行處理。在編碼器的眾多類型中,增量編碼器和絕對(duì)值
    的頭像 發(fā)表于 06-03 15:40 ?2857次閱讀

    【RTC程序設(shè)計(jì):實(shí)時(shí)音視頻權(quán)威指南】音視頻的編解碼壓縮技術(shù)

    音視頻所載有的信息在通過傳輸?shù)臅r(shí)候就需要壓縮編碼。 其中,文本壓縮是指通過使用各種算法和技術(shù),將文本數(shù)據(jù)表示為更緊湊的形式,以減少存儲(chǔ)空間。 霍夫曼編碼是一種無損壓縮算法,它可以根據(jù)字符出現(xiàn)
    發(fā)表于 04-28 21:04

    編碼器分辨率是什么意思 編碼器分辨率和脈沖數(shù)的關(guān)系

    按照編碼器支持的分辨率可以把編碼器分成標(biāo)清編碼器、高清編碼器、全高清編碼器,分辨率越高幀率越高視頻就越清楚。 1.
    的頭像 發(fā)表于 02-21 18:07 ?4253次閱讀
    <b class='flag-5'>編碼</b>器分辨率是什么意思 <b class='flag-5'>編碼</b>器分辨率和脈沖數(shù)的關(guān)系

    編碼器好壞怎么判斷,編碼器原理

    編碼器(Encoder)是將輸入數(shù)據(jù)轉(zhuǎn)化為特定編碼表示的一種技術(shù)。對(duì)于不同類型的編碼器,評(píng)判其好壞可以從多個(gè)方面進(jìn)行考量,包括編碼質(zhì)量、速度、模型結(jié)構(gòu)等。
    的頭像 發(fā)表于 01-23 10:58 ?1908次閱讀

    磁性編碼器和光電編碼器的比較

    伺服電機(jī)編碼器是一種關(guān)鍵的反饋裝置,用于測量和控制電機(jī)的轉(zhuǎn)速和位置。在選擇伺服電機(jī)編碼器時(shí),常常面臨一個(gè)選擇:使用磁電編碼器還是光電編碼器。接下來將從幾個(gè)關(guān)鍵方面比較這兩種類型的
    的頭像 發(fā)表于 01-18 10:29 ?3229次閱讀