動態(tài)規(guī)劃分享資料_第1頁
動態(tài)規(guī)劃分享資料_第2頁
動態(tài)規(guī)劃分享資料_第3頁
動態(tài)規(guī)劃分享資料_第4頁
動態(tài)規(guī)劃分享資料_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1動態(tài)規(guī)劃天津大學2例題:數(shù)字方陣n給出一個數(shù)字方陣,形式如下:n1 2 3 4n8 7 6 5n9 10 11 12n16 15 14 13n找出從第一層到最后一層的一條路,使得所經(jīng)過的權(quán)值之和最小。要求每一步只能向下,左下和右下這三個方向走。3例題:數(shù)字方陣n設(shè)f(i, j)是走到第i行第j列時能夠得到的最小權(quán)值,根據(jù)規(guī)則最多只有三個格子能走到這個格子:(i-1, j-1),(i-1, j),(i-1, j+1)。要求出到走到位置(i, j)時的能夠得到的最小權(quán)值,要先求出走到上面那三個位置時的最小權(quán)值(為什么?)于是可以列出遞歸式:nf(i, j) = min f(i-1, j-1),

2、f(i-1, j), f(i-1, j+1) + wijn然而如果這樣直接寫成遞歸程序,效率并不高。4例題:數(shù)字方陣n使用二維數(shù)組dp,每當算完一個f(i,j),就把結(jié)果保存在dpij中,下次再用到這個結(jié)果,可以直接使用,從而避免了重復計算。5動態(tài)規(guī)劃解決的問題n能夠用動態(tài)規(guī)劃解決的問題,往往是最優(yōu)化問題而且問題的最優(yōu)解的局部往往是局部問題在相應條件下的最優(yōu)解。而且問題的最優(yōu)解與其子問題的最優(yōu)解要有一定的關(guān)聯(lián),要能建立遞推關(guān)系,此外,為了體現(xiàn)動態(tài)規(guī)劃的高時效,子問題應當是互相重疊的,即很多不同的問題共享相同的子問題。6動態(tài)規(guī)劃的解題思路n通過劃分子問題來縮小問題規(guī)模n記錄子問題的最優(yōu)解從而避免

3、重復計算7設(shè)計動態(tài)規(guī)劃算法的一般步驟n確定子問題的表示方法(確定狀態(tài))n遞歸地定義最優(yōu)解的值(狀態(tài)轉(zhuǎn)移方程)n按自底而上的方式構(gòu)造最優(yōu)解的值8動態(tài)規(guī)劃實現(xiàn)的兩種方法n自頂而下的記憶化搜索n通過遞歸的方式,將對問題最優(yōu)解的求解,歸結(jié)為求其子問題的最優(yōu)解,并將計算過的結(jié)果記錄下來,以后使用時不必重新計算。n自底而上的遞推方法9動態(tài)規(guī)劃的分類n編號動態(tài)規(guī)劃n區(qū)間動態(tài)規(guī)劃n劃分動態(tài)規(guī)劃n數(shù)軸動態(tài)規(guī)劃n樹形動態(tài)規(guī)劃10編號動態(tài)規(guī)劃一般有兩種表示狀態(tài)的方法:1) 狀態(tài)i表示前i個元素構(gòu)成的最優(yōu)解,可能不包含第i個元素。2) 狀態(tài)i表示在必須包含第i個元素的情況下前i個元素構(gòu)成的最優(yōu)解。11編號動態(tài)規(guī)劃-最

4、長不下降子序列n給定一個序列:a1, a2, , an,從這個序列中選出m個元素:ai1, ai2, , aim,如果i1, i2, , im滿足i1 i2 im,那么就把這m個選出的元素組成的序列成為原來序列的子序列。如果子序列滿足ai1 ai2 aim,那么就稱這個子序列為不下降子序列,這個問題是要求出指定序列的最長不下降子序列。12編號動態(tài)規(guī)劃-最長不下降子序列n分析:假設(shè)最長不下降子序列中包含元素ak,那么一定存在一組最優(yōu)解,它包含了a1, a2, , ak這個序列的最長不下降子序列。n子問題的表示:令dpi表示以第i個元素結(jié)尾的前i個元素構(gòu)成的最長不下降子序列的長度。n遞歸地定義最優(yōu)

5、解:ndpi = max dpj | 0 j i; aj ai + 113編號動態(tài)規(guī)劃-最長不下降子序列n偽代碼:nFOR i FROM 1 TO nn dpi 0;n FOR j FROM 1 TO i 1n IF aj dpin THEN dpi dpj;n dpi dpi + 1;14編號動態(tài)規(guī)劃-最長不下降子序列n上面的算法的時間復雜度為O(n2),是否可以優(yōu)化呢?n分析:設(shè)Ai = min aj | dpj = i,那么如果i j,一定可以推出Ai Aj。n狀態(tài)轉(zhuǎn)移:ndpi = max j | Aj ai + 1; n(maxj | Aj ai可以通過二分查找求出)15編號動態(tài)規(guī)劃

6、-最大局部和n給定一個數(shù)列:a1, a2, , an,它的局部和定義為S(i, j) = ai + ai+1 + + aj。求這個數(shù)列的最大局部和。16編號動態(tài)規(guī)劃-最大局部和n分析:如果元素ai是最大局部和的一部分,那么只有兩種情況:ai是這個局部和的開始元素;或ai接在ai-1之后。n子問題的表示:n令dpi表示以ai結(jié)束的最大局部和。n遞歸地定義最優(yōu)解:ndpi = maxdpi 1 + ai, ain化簡得:dpi = max dpi 1, 0 + ai17編號動態(tài)規(guī)劃-最大局部和n偽代碼:ndp0 0;nFOR i FROM 1 TO nn IF dpi 1 0)n最終結(jié)果為:maxsumi39樹形動態(tài)規(guī)劃-賄賂nA國要申辦某項國際會議,它必須爭取到m個以上國家的同意才能申辦成功。然而,如果不采用賄賂的手段,沒有國家會支持A國。在國與國之間存在附庸關(guān)系,如果B國是C國的附庸國,那么賄賂了C國就不用再賄賂B國也會獲得B國的支持?,F(xiàn)在已知n個國家之間的附庸關(guān)系,以及賄賂每個國家需要花費的資金,問最少需要花費多少,A國才能申辦成功。40樹形動態(tài)規(guī)劃-賄賂n國家的關(guān)系形成一個森林,用dpij表示在國家i及其子樹中,爭取到j(luò)張選票所需的最

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論