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