5.5.3哈夫曼树和哈夫曼编码
太棒了小哥哥講的 (?? ? 3?)哈哈哈棒棒噠
?
大家好,本節(jié)后我們一起來學習,二產數(shù)應用的最后一個考點就是哈弗曼數(shù),畢竟在哈佛邁出之前,我們先來了解一個知識點,就是什么是帶全路徑長度,我們之前學習過路徑長度我們一起來回憶一下路徑長度指路徑上所經歷邊的個數(shù),這要強調一下是邊的個數(shù),而債權的意思則是節(jié)點被賦予了某些特定的數(shù)值表示了一些特定的含義,比如說它可以代表這個節(jié)點的使用次數(shù),或者是這個節(jié)點的重要性,還有知道了帶全部一些長度之后,我們再來看什么是豎的帶圈路徑長度豎的帶圈路徑長度簡稱為wpl,它是豎中所有業(yè)界點的帶全路徑長度之和,這個也強調一下是業(yè)界點好,我們把它記為wpl=wI×lI求和,那么這里wI表示第n個節(jié)點的權重,mI表示df節(jié)點的路徑長度我們將所有。 MI表示df節(jié)點的路徑長度,我們將所有節(jié)點求和就可以得到數(shù)的代傳路徑長度了,好,接下來我們來計算幾個數(shù)的代差工具,長度我們來練習一下,這是一個。哈菲曼殊的定義函數(shù)也稱為最優(yōu)的二叉樹,它是含有帶全葉子節(jié)點帶權路徑長度最小的二手書,那么我們再舉的兩個字當中,第2個例子就是一個哈弗曼樹,我們該如何判斷一棵樹為哈夫曼樹或者說給出我們這樣三個節(jié)點以及它們的權重該如何構造出他們的哈弗曼樹呢?接下來我們就來學習哈弗曼樹的構造方法,它的第1步是將n個節(jié)點作為n棵,僅含有一個根節(jié)點的二叉樹,構成了一個cnf,接上第2步生成一個新的節(jié)點,并從f中找出根節(jié)點,全指最小的兩個數(shù)作為它的左右子數(shù),大家要注意一下,這里的左右指數(shù)是沒有順序的要求的,哪一棵樹作為左子樹,哪一棵樹作為柚子樹都可以好,接下來最后我們就要將新節(jié)點的全職第二部。跟節(jié)點到全職之和后,這就是第2步,接下來第3步從f中刪除這兩個數(shù),并將新生成的數(shù)加入到f當中,最后我們只需要重復2三步驟,直到f只剩下一棵樹為止,這樣我們就可以得出哈弗曼樹了,接下來我們就來看剛剛那個例子,我們有這樣三個業(yè)績點abc,他們的權重是723,如果構造出剛好那一刻哈弗曼。這個大家需要注意的點是,開封半數(shù)并沒有強調哪一棵樹要作為左子樹,哪一棵樹要作為柚子樹,所以哈弗曼樹是不唯一的方法,接下來我們來學習哈弗曼說的一些重要性質,當然這些性質是因為哈羅曼說的特殊操作方法而產生的,首先第1個性質是每個初始節(jié)點都會成為業(yè)界點,生日節(jié)點,都為新生成的經典經典,因為我們知道在過錯過程當中,只有新上上的節(jié)點才會有左右子數(shù),而我們初始的業(yè)績點是沒有左右子數(shù)的,所以我們會有這樣的性質好,第2種性質是權勢越大,離跟節(jié)點越近,反之權勢越小會更節(jié)點越遠,這也是因為我們在構造的過程當中,我們會優(yōu)先選擇跟圈是最小的兩個數(shù),最后一個星星點到左子處出來的那些樹月月后選擇出了那些年所以會有這樣的。只會跟這個點越遠我越喝水,根結點越近,所以會有這樣的性質,二接著第3條性質是哈弗曼樹中我們有幾點的杜維一,這是因為我們在工作過程當中我們會選擇兩個數(shù),作為一個新節(jié)點的子樹,永遠都是選擇兩個數(shù),所以所有的新節(jié)點,所有的雙十節(jié)點都會有兩個手術在哈分數(shù)當中沒有度為一的只有度為2的新節(jié)點,以嫉妒為領到的意思,結點也就是那些初始節(jié)點好,最后一個性質則是n個葉子積淀的哈弗曼樹的節(jié)點,總數(shù)為r減1,其中度為2的節(jié)點數(shù)為n-1,這個性質也適用于沒有節(jié)點度為1的2查數(shù)當中,這個性質我們之前就提到過,利用的則是我們之前一直使用的那一個等式,也就是左邊是三種度的節(jié)儉手術,右邊是孩子結點總數(shù)以及加上根節(jié)點學習。他學習一個游玩哈弗曼數(shù)的重要的應用就是解決編碼問題,首先我們來看什么是編碼編碼,即使對于一個字符串序列用對應的二進制數(shù)來表示每一個字符,因為我們知道在計算機底層是沒有所謂的abc,這樣的字符的所有字符都要用01這樣的拉近數(shù)來表示,他知道什么是編碼之后我們來看,那么根據(jù)不同的編碼方式,我們分為了兩種編碼,第1種是固定長度編碼,其實每一個字符對應的二進制數(shù)序列的長度是相同的,我們來看這樣的例子,首先給出大家一個字符串序列,hello,world我們對應著實現(xiàn)它的固定長度編碼,我們可以用了三位,二定數(shù)來表示了每一個字母,其中00代表大寫的h01代表了e,以此類推這樣的對應關系就可以得出我們都出了這樣的啊。表示我們得出了這樣的二級數(shù)表示,還有這就是固定長度編碼,大家可能會有兩點疑慮,第1點是我們?yōu)槭裁床挥瞄L度較短的而且書編碼來表示每一個字母呢,比如說我們用兩位0.5代表帶來一次不可以嗎?接下來第2個一個就是這個月我們發(fā)現(xiàn)自由式序列當中l(wèi)的出現(xiàn)次數(shù)非常多,那么這些出現(xiàn)字數(shù)非常多的字母,我們用較短的編碼來表示,是不是就可以得到一個較短的,而且是數(shù)pv啊,那么我們根據(jù)這樣的要求去演出了,第2種編碼方式就是可變長度編碼,也就是每一個字母的編碼,它的長度是不同的,是可變的它會依舊來看hello world這樣一個例子,我們根據(jù)房屋的要求實現(xiàn)了這樣的對應關系,我們用語音應用代表了大寫的h,其中我們發(fā)現(xiàn)因為l它出現(xiàn)的次數(shù)非常多,所以我們有一個編碼,一個給了一個這就是我們依舊用他。好,這就是對應表,其實我們依舊用對應表來實現(xiàn)它的二級指數(shù)序列,這就是對應的二級指數(shù)序列,我們發(fā)現(xiàn)這樣序列是不是比之前序列要短很多呀?但是這樣的序列是不可以應用的,為什么呢?我們來看,如果我們現(xiàn)在此時想要把一個二次函數(shù)序列轉換成它對應的字母,對應的字符串應該怎樣轉換呢?在固定程度當中我們可以由對應關系以及每三位代表著一個字母來這樣依次的進行轉換,就可以將二進制數(shù)序列轉換上我們對應的字符串了,那么在可變長的編碼會出現(xiàn)這樣的問題,比如說我們來看我們從左到右依次轉換,我們首先遇到了玲玲,這樣兩個二進制數(shù)那么00,這樣兩個禁術他有兩種轉換方法,第1種是轉換成也就是兩個這樣是不是就出現(xiàn)企業(yè)了所以這樣的不可用的。我們不可以轉化為對應的字符串序列了,所以這樣的可變成編碼其實是不可用的,那么什么樣的是可用的呢?是我們接下來要學習的前置編碼,也就是沒有一個編碼是另一個編碼的前綴,那么按照這樣方法,我們就不會產生歧義,就不會產生我們剛才所出現(xiàn)的錯誤了,那么我們來修改一下我們的對應表,我們將對應秒修改的這樣的情況,這里我們用一一來代表l,它縮減了對應的長度,而且沒有任意一個編碼是對應另外一個編碼的前綴,什么意思啊?比如說我們來看一第一不會出現(xiàn)在任何一個字母對應編碼的前綴當中,也就是前兩位,這樣我們在翻譯的時候就不會出現(xiàn)錯誤,比如說00它的前兩位是00,并不是11 101前兩位也不是11,然后后面的所有的字母它的前綴都不是一,這樣我們在實現(xiàn)翻譯的過程當中就不會產生錯誤,那么它實現(xiàn)的二進制序列就是這樣的。這不會產生錯誤,那么它實現(xiàn)的二進制序列就是這樣的,它也比之前我們所實現(xiàn)的固定成的編碼要短,而且我們可以實現(xiàn)e過程也就是運用二鍵數(shù)序列來得到對應的字符串,還有這就是潛水編碼,那么這樣的潛射編碼應該怎樣編寫呢?應該怎樣得到呢?我們就用了哈夫曼樹這樣一個特殊的二叉樹,所以這樣來看一個例子大家就明白了,這給我們有5個字母,也就是abcde以及對應的它出現(xiàn)的次數(shù)a出現(xiàn)了兩次b出現(xiàn)了三次,以此類推怎樣得到對應的解除編碼呢?我們利用了哈夫曼樹這樣一個構造方法,首先我們將每一個字母升上一個節(jié)點,并且它的權重就是他的出現(xiàn)色素,所以說我們利用函數(shù)的構造過程構造出了這樣一個哈夫曼樹。倒過多少構造,出了這樣一套哈弗曼數(shù)。包括到時候漢服賣出之后,我們只需要將所有的邊賦予01就可以了,什么意思呢?我們將左邊的邊賦予為0,右邊的邊賦予為1,然后我們利用從根基點到某一個節(jié)點到邊就可以得到出它對應的前置編碼了,比如說從根結點到d節(jié)點的邊有00兩條邊,那么它的前置編碼就是00,我們按照這樣的關系就可以得出所有字母的前置編碼,大家有沒有發(fā)現(xiàn)沒有任何一個編碼它是另一個編碼的前綴啊,所以說它是前置編碼,而且我們發(fā)現(xiàn)對應次數(shù)出現(xiàn)較多的節(jié)點,它會更靠近跟節(jié)點,它的編碼長度會更短,而次數(shù)出現(xiàn)較少的節(jié)點才會更遠的節(jié)點,他們的編碼長度會更長好,這樣我們是不是也達到了,為了縮減我們對應的而且是序列的要求啊為什么我們可以用這樣的選擇。那么為什么我們可以用函數(shù)來構造這樣的前綴編碼了,第1個這也是哈弗曼樹在過造的過程當中,他優(yōu)先選擇權是較小的兩個節(jié)點,作為新節(jié)點的兩個子樹,那么依次向上,我們就會讓那些全是教導節(jié)點的根節(jié)點越來越遠,而確實較大的節(jié)點離杠精點越來越進,第2個特點是由跟進點到葉結點都有唯一一條路徑,而且每一個硬件也都是初始接線,都是我們要求編碼的那一些字母,這就是第2個原因,好,這就是哈哈數(shù)解決前綴編碼的方法,那么最后還需要強調的一點是,哈佛函數(shù)并不唯一,因為我們可以交換左右子數(shù),那么對應了字符01也是可以交換的,所以每個字符對應的哈方便編碼也是不唯一的,但無論怎么樣的不唯一,最終的代權路徑長度是相同的而且是最優(yōu)的,因為它是一個阿富汗樹好,這是哈佛半數(shù)的一個重要應用,這就是本節(jié)課的全部內容。?
總結
以上是生活随笔為你收集整理的5.5.3哈夫曼树和哈夫曼编码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 铁道部官网如何体现了互联网思维?
- 下一篇: 岳阳学计算机软件,岳阳附近的it计算机电