DP(動(dòng)態(tài)規(guī)劃)學(xué)習(xí)小結(jié)

1.什么樣的問(wèn)題適合動(dòng)態(tài)規(guī)劃戚炫?
基本上有兩個(gè)特征:(a)是一個(gè)最優(yōu)化問(wèn)題(optimal)稠肘;(b)有個(gè)最優(yōu)子結(jié)構(gòu)(substructure)猖毫,狀態(tài)轉(zhuǎn)移只依賴(lài)最近的幾項(xiàng)保礼,這點(diǎn)類(lèi)似遞歸吃度。
具體例子參見(jiàn):LCS(longest common substring)甩挫,背包問(wèn)題,最少硬幣等等椿每。

2.和遞歸有什么不同伊者?
遞歸只是一種寫(xiě)法。
最大的不同是有重疊的子問(wèn)題间护。遞歸算法一般來(lái)說(shuō)是可以解決動(dòng)態(tài)規(guī)劃問(wèn)題亦渗,但是復(fù)雜度相比窮舉幾乎沒(méi)有改善,這時(shí)兑牡,如果畫(huà)出解決流程的決策樹(shù)央碟,就會(huì)發(fā)現(xiàn)有很多重疊的子問(wèn)題。
這點(diǎn)帶來(lái)的好處就是可以大幅度減少運(yùn)算均函。比如最簡(jiǎn)單的memo法(判斷子問(wèn)題算過(guò)就不再算)亿虽,還有直接正序計(jì)算。這里的正序計(jì)算就是一般意義上的動(dòng)態(tài)規(guī)劃法苞也。

3.例題
a.最長(zhǎng)的升序的子序列(子序列和子串的區(qū)別是不用連續(xù)):
技巧是建立狀態(tài)轉(zhuǎn)移:以每個(gè)序列的結(jié)尾的數(shù)作為下標(biāo)洛勉,以長(zhǎng)度作為狀態(tài)值,這樣新來(lái)一個(gè)就好判斷了如迟。

b.區(qū)間和最大:
技巧是狀態(tài)轉(zhuǎn)移:下標(biāo)是數(shù)列的下標(biāo)收毫,記錄的是以當(dāng)前下標(biāo)指向的數(shù)結(jié)尾的和最大的區(qū)間(注意,沒(méi)有定區(qū)間起點(diǎn)殷勘,這個(gè)可以最后再找最大的此再,定了區(qū)間的終點(diǎn),這樣就容易遞歸了)

c.長(zhǎng)度為n的01組成的字符串玲销,不含連續(xù)3個(gè)0输拇。問(wèn):有幾種?
dp(i,0)以0結(jié)尾的長(zhǎng)度為i的字符串有幾種贤斜;dp(i,1)以1結(jié)尾的....策吠;
然后枚舉i-1和i-2的情況,如果同時(shí)為0瘩绒,那么i位置只能為0猴抹。所以,
dp(i,0)=dp(i-1,0) + dp(i-1,1) - dp(i-2,0)
dp(i,1)=dp(i-1,0) + dp(i-1,1)
結(jié)果是dp(n,0)+dp(n,1)

d.p次入棧锁荔,q次出棧的可能的順序有幾種蟀给?
也是枚舉末尾狀態(tài):末尾是出棧/入棧,所以,f(p,q)=f(p-1,q)+f(p,q-1)

e.n堆石子坤溃,構(gòu)成一個(gè)vector拍霜,每次合并相鄰的兩堆,消耗是這兩堆石子數(shù)目之和薪介,問(wèn)怎么合并消耗最小,最小是多少越驻?
dp(i,j)表示從i~j合并的最小消耗汁政,那么求dp(i,j)可以枚舉最后一步是合并的哪兩個(gè)部分。這個(gè)題沒(méi)有特別巧妙的方法缀旁,復(fù)雜度為O(n^3)
進(jìn)階1:n堆石子记劈,每次合并任意兩堆,最小消耗是多少并巍?
找最小的兩堆合并目木,完了把這堆加入,再找最小的兩堆合并懊渡,一直下去
進(jìn)階2:n堆石子刽射,每次合并堆的數(shù)目必須小于等于m,最小消耗是多少剃执?
可以用m-叉樹(shù)來(lái)說(shuō)明這個(gè)問(wèn)題誓禁。其邏輯見(jiàn)下一題(Huffman編碼)。假設(shè)已經(jīng)說(shuō)明了我們只要第一次合并是小于m的肾档,其他都是m次摹恰,那么根據(jù)n,可以求出m來(lái)(n-(x-1)-k(m-1)=1)怒见,這樣就完全確定了俗慈。為什么要小于m只能是在第一次:不然可以把葉子節(jié)點(diǎn)移到上面去,消耗是減小的遣耍。

f.Huffman編碼:根據(jù)每個(gè)字母出現(xiàn)的頻率闺阱,確定其Huffman編碼(01組成,任何一個(gè)字母的編碼不能是其他編碼的前綴)
這里的邏輯也是一直找最小的堆合并配阵。用樹(shù)來(lái)模擬這個(gè)過(guò)程:從葉子節(jié)點(diǎn)開(kāi)始建馏颂,找頻率最低的兩個(gè),然后


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棋傍,一起剝皮案震驚了整個(gè)濱河市救拉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瘫拣,老刑警劉巖亿絮,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡派昧,警方通過(guò)查閱死者的電腦和手機(jī)黔姜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蒂萎,“玉大人秆吵,你說(shuō)我怎么就攤上這事∥宕龋” “怎么了纳寂?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)泻拦。 經(jīng)常有香客問(wèn)我毙芜,道長(zhǎng),這世上最難降的妖魔是什么争拐? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任腋粥,我火速辦了婚禮,結(jié)果婚禮上架曹,老公的妹妹穿的比我還像新娘隘冲。我一直安慰自己,他們只是感情好音瓷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布对嚼。 她就那樣靜靜地躺著,像睡著了一般绳慎。 火紅的嫁衣襯著肌膚如雪纵竖。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天杏愤,我揣著相機(jī)與錄音靡砌,去河邊找鬼。 笑死珊楼,一個(gè)胖子當(dāng)著我的面吹牛通殃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播厕宗,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼画舌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了已慢?” 一聲冷哼從身側(cè)響起曲聂,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎佑惠,沒(méi)想到半個(gè)月后朋腋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體齐疙,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年旭咽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贞奋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡穷绵,死狀恐怖轿塔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情请垛,我是刑警寧澤催训,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站宗收,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏亚兄。R本人自食惡果不足惜混稽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望审胚。 院中可真熱鬧匈勋,春花似錦、人聲如沸膳叨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)菲嘴。三九已至饿自,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間龄坪,已是汗流浹背昭雌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留健田,地道東北人烛卧。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像妓局,于是被迫代替她去往敵國(guó)和親总放。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 動(dòng)態(tài)規(guī)劃(Dynamic Programming) 本文包括: 動(dòng)態(tài)規(guī)劃定義 狀態(tài)轉(zhuǎn)移方程 動(dòng)態(tài)規(guī)劃算法步驟 最長(zhǎng)...
    廖少少閱讀 3,279評(píng)論 0 18
  • 動(dòng)態(tài)規(guī)劃應(yīng)用于子問(wèn)題重疊的情況好爬。對(duì)于公共子問(wèn)題局雄,分治算法會(huì)做很多不必要的工作,它會(huì)反復(fù)求解公共子問(wèn)題抵拘。而動(dòng)態(tài)規(guī)劃算...
    LRC_cheng閱讀 432評(píng)論 0 1
  • 原文: 常用的算法設(shè)計(jì)思想主要有動(dòng)態(tài)規(guī)劃哎榴、貪婪法型豁、隨機(jī)化算法、回溯法等等尚蝌,這些思想有重疊的部分迎变,當(dāng)面對(duì)一個(gè)問(wèn)題的時(shí)...
    josephok閱讀 1,125評(píng)論 0 3
  • 目錄 動(dòng)態(tài)規(guī)劃與分治法 2.動(dòng)態(tài)規(guī)劃求解的最優(yōu)化問(wèn)題應(yīng)該具備的兩個(gè)要素2.1 最優(yōu)子結(jié)構(gòu)2.2 子問(wèn)題重疊 動(dòng)態(tài)規(guī)...
    王偵閱讀 1,378評(píng)論 0 1
  • 一個(gè)字符串的子串是字符串中連續(xù)的一個(gè)序列,而一個(gè)字符串的子序列是字符串中保持相對(duì)位置的字符序列飘言,譬如衣形,"adi"可...
    AwesomeAshe閱讀 1,182評(píng)論 0 0