《dp入門講解》PPT課件.ppt

《dp入門講解》PPT課件.ppt

ID:51537789

大?。?.29 MB

頁(yè)數(shù):24頁(yè)

時(shí)間:2020-03-22

《dp入門講解》PPT課件.ppt_第1頁(yè)
《dp入門講解》PPT課件.ppt_第2頁(yè)
《dp入門講解》PPT課件.ppt_第3頁(yè)
《dp入門講解》PPT課件.ppt_第4頁(yè)
《dp入門講解》PPT課件.ppt_第5頁(yè)
資源描述:

《《dp入門講解》PPT課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、動(dòng)態(tài)規(guī)劃入門講解UESTC陳斐童什么是dynamicprogramming?Dp不是一種算法,而是一種思想。TopDownMethod遞歸的將問(wèn)題分解為更小的問(wèn)題。BottomUpMethod由初始狀態(tài)遞推得到目標(biāo)狀態(tài)。Dp的本質(zhì)是狀態(tài)和狀態(tài)轉(zhuǎn)移。做dp題的時(shí)候就是定義狀態(tài),寫出轉(zhuǎn)移方程。Dp的條件是最優(yōu)子結(jié)構(gòu)和無(wú)后效性。不滿足這兩個(gè)條件的,思想又和dp相似的,叫搜索。狀態(tài)的定義?狀態(tài)是保存的信息狀態(tài)要有利于答案的求解狀態(tài)要容易轉(zhuǎn)移一個(gè)簡(jiǎn)單的例子,dp[n]=dp[n-1]+dp[n-2]兩個(gè)條件?無(wú)后效性狀

2、態(tài)間的轉(zhuǎn)移與如何到達(dá)某狀態(tài)無(wú)關(guān)狀態(tài)定義完整而唯一最優(yōu)子結(jié)構(gòu)當(dāng)前狀態(tài)可以從之前的某個(gè)或某些狀態(tài)直接得到狀態(tài)轉(zhuǎn)移包含了所有的可能復(fù)雜度?時(shí)間復(fù)雜度:狀態(tài)數(shù)*狀態(tài)轉(zhuǎn)移數(shù)空間復(fù)雜度:狀態(tài)數(shù)?例題所有代碼僅做演示,肯定是過(guò)不了題的。(雖然專題好像沒(méi)有例題)例題1:數(shù)字三角形311276645827341從上往下走,每次可以向左下或右下走一個(gè),直到最下行,問(wèn)經(jīng)過(guò)數(shù)字的和最大是多少?例題1:數(shù)字三角形311276645827341貪心?在第二行就迷失了方向例題1:數(shù)字三角形311276645827341定義狀態(tài)dp[i][

3、j]表示當(dāng)走到第i行,第j個(gè)節(jié)點(diǎn),能夠得到的最大的和。Ans=max{dp[5][k]},k=1...5例題1:數(shù)字三角形311276645827341狀態(tài)轉(zhuǎn)移:dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+val[i][j]dp[i][j]表示當(dāng)走到第i行,第j個(gè)節(jié)點(diǎn),能夠得到的最大的和。例題1:數(shù)字三角形311276645827341狀態(tài)轉(zhuǎn)移:dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+val[i][j]dp[i][j]表示當(dāng)走到第i行,第j個(gè)

4、節(jié)點(diǎn),能夠得到的最大的和。例題1:數(shù)字三角形自頂而下(記憶化搜索)dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+val[i][j]例題1:數(shù)字三角形自底而上(遞推)dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+val[i][j]例題2:最長(zhǎng)上升子序列給定一個(gè)長(zhǎng)度為n(1<=n<=1000)的整數(shù)序列a[i],求它的一個(gè)子序列(子序列即在原序列任意位置刪除0或多個(gè)元素后的序列),滿足如下條件:1、該序列單調(diào)遞增;2、在所有滿足條件1的序列中長(zhǎng)度是最長(zhǎng)的

5、;例題2:最長(zhǎng)上升子序列給定一個(gè)長(zhǎng)度為n(1<=n<=1000)的整數(shù)序列a[i],求它的一個(gè)子序列(子序列即在原序列任意位置刪除0或多個(gè)元素后的序列),滿足如下條件:1、該序列單調(diào)遞增;2、在所有滿足條件1的序列中長(zhǎng)度是最長(zhǎng)的;狀態(tài)定義:dp[i]表示以第i個(gè)數(shù)結(jié)尾的上升子序列最長(zhǎng)的長(zhǎng)度。狀態(tài)轉(zhuǎn)移:dp[i]=max{dp[j]}+1其中j=1….i-1,且a[i]>a[j]Ans=max{dp[i]},i=1...n時(shí)間復(fù)雜度:O(n2)空間復(fù)雜度:O(n)例題2:最長(zhǎng)上升子序列演示代碼例題3:區(qū)間dp(

6、POJ3280)給定一個(gè)長(zhǎng)度為n(n<=1000)的字符串A,求插入最少多少個(gè)字符使得它變成一個(gè)回文串。例題3:區(qū)間dp狀態(tài)定義:dp[i][j]表示A[i...j]成為回文串需要插入的字符數(shù)。注意i>j時(shí)表示空串,是回文串,是有意義的。狀態(tài)轉(zhuǎn)移:A[i]==A[j]時(shí),dp[i][j]=dp[i+1][j-1]A[i]!=A[j]時(shí),我們既可以在A[i]后插入一個(gè)A[j],也可以在A[j]前插入一個(gè)A[i],因此有dp[i][j]=min(dp[i+1][j],dp[i][j-1])+1Ans=dp[1][

7、len]給定一個(gè)長(zhǎng)度為n(n<=1000)的字符串A,求插入最少多少個(gè)字符使得它變成一個(gè)回文串。例題3:區(qū)間dp演示代碼例題4:狀壓dp(TSP)對(duì)于一個(gè)節(jié)點(diǎn)數(shù)<=15的圖,要求找到一條路徑能夠遍歷每一個(gè)節(jié)點(diǎn)一次后返回出發(fā)點(diǎn)(Hamiltonianpath),并且路徑距離最短。例題4:狀壓dp直接枚舉所有可能的順序,O(n!)無(wú)法承受。狀態(tài)定義://注意這題從0開(kāi)始計(jì)數(shù)memo[i][j]i的每一位表示已經(jīng)經(jīng)過(guò)的點(diǎn),j表示當(dāng)前所在的點(diǎn)由于狀態(tài)轉(zhuǎn)移沒(méi)有明顯的順序,用記憶化搜索比較好。search(i,j):fo

8、rkinnotvisitednode:search(i

9、(1<

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。