基本算法的tips

哈夫曼樹

一般的,a、b、c、d、e、f、g七個(gè)字符在一份數(shù)據(jù)中出現(xiàn)的次數(shù)為1、2、3、4、5、6、7。

step1:將7個(gè)字符中,出現(xiàn)此次最少的字符a和b取出,構(gòu)造一根子樹x,它們的次數(shù)分別成為左右節(jié)點(diǎn),它們的次數(shù)和組成根節(jié)點(diǎn)。

step2:將step1的到樹放入原數(shù)據(jù)中(x,c,d,e,f,g),將此時(shí)數(shù)據(jù)中出現(xiàn)次數(shù)最少的兩個(gè)取出(x和c),構(gòu)造一根新的子樹y,它們的次數(shù)分別成為左右節(jié)點(diǎn),它們的次數(shù)和組成根節(jié)點(diǎn)。

...

重復(fù)step2,直到只剩下一個(gè)根節(jié)點(diǎn)的樹,即為哈夫曼樹。


哈夫曼編碼

將哈夫曼樹所有子樹的左子樹路徑標(biāo)0.,右子樹路徑標(biāo)1,依次求出各個(gè)字符的編碼。


裝箱問題的求解

離散數(shù)學(xué)的最優(yōu)組合,一般通過(guò)動(dòng)態(tài)規(guī)劃實(shí)現(xiàn)。

無(wú)法求得最優(yōu)解,一般是近似解(貪心(婪)算法)。

例如沙袋問題:如何用盡可能少的箱子裝下大小不一的沙袋。

將沙袋排序,最大沙袋先入,然后從隊(duì)列尾部取最小的沙袋入,如果箱子未裝滿繼續(xù)隊(duì)尾,否則下一個(gè)隊(duì)首和隊(duì)尾。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 樹的概述 樹是一種非常常用的數(shù)據(jù)結(jié)構(gòu),樹與前面介紹的線性表,棧,隊(duì)列等線性結(jié)構(gòu)不同,樹是一種非線性結(jié)構(gòu) 1.樹的定...
    Jack921閱讀 4,757評(píng)論 1 31
  • 定義指針變量,如果不賦給它地址,系統(tǒng)會(huì)隨機(jī)給它分配一個(gè)地址。 C++標(biāo)準(zhǔn)庫(kù) C++ Standard Librar...
    縱我不往矣閱讀 338評(píng)論 0 1
  • 1 序 2016年6月25日夜,帝都,天下著大雨,拖著行李箱和同學(xué)在校門口照了最后一張合照,搬離寢室打車去了提前租...
    RichardJieChen閱讀 5,372評(píng)論 0 12
  • 昨天與一個(gè)00后的女孩子聊天,提到了我們國(guó)家生男偏好的文化習(xí)俗、重男輕女的社會(huì)現(xiàn)象,令我驚訝的是,00后對(duì)重...
    一只不酸的青檸閱讀 257評(píng)論 0 0
  • 一、UniversalImageLoader https://github.com/nostra13/Androi...
    水大云霄閱讀 22,500評(píng)論 8 40

友情鏈接更多精彩內(nèi)容