算法設(shè)計與分析 課件 第四章 動態(tài)規(guī)劃_第1頁
算法設(shè)計與分析 課件 第四章 動態(tài)規(guī)劃_第2頁
算法設(shè)計與分析 課件 第四章 動態(tài)規(guī)劃_第3頁
算法設(shè)計與分析 課件 第四章 動態(tài)規(guī)劃_第4頁
算法設(shè)計與分析 課件 第四章 動態(tài)規(guī)劃_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

計算機算法設(shè)計與分析第四章

動態(tài)規(guī)劃學(xué)習(xí)目標(biāo)了解動態(tài)規(guī)劃法的基本概念。掌握動態(tài)規(guī)劃法的基本思想。掌握動態(tài)規(guī)劃法解決實際問題。4.1動態(tài)規(guī)劃的提出在現(xiàn)實生活中,有一類活動的過程,由于它的特殊性,可將過程分成若干個互相聯(lián)系的階段,在它的每一階段都需要作出決策,從而使整個過程達(dá)到最好的活動效果。當(dāng)然,各個階段決策的選取不是任意確定的,它依賴于當(dāng)前面臨的狀態(tài),又影響以后的發(fā)展,當(dāng)各個階段決策確定后,就組成一個決策序列,因而也就確定了整個過程的一條活動路線,如下圖所示。這種把一個問題看作是一個前后關(guān)聯(lián)具有鏈狀結(jié)構(gòu)的多階段過程就稱為多階段決策過程,這種問題就稱為多階段決策問題。1狀態(tài)決策2狀態(tài)狀態(tài)決策n狀態(tài)狀態(tài)...決策4.1動態(tài)規(guī)劃的提出在多階段決策問題中,各個階段采取的決策,一般來說是與時間有關(guān)的,決策取決于當(dāng)前的狀態(tài),然后又會引起狀態(tài)的轉(zhuǎn)移,一個決策序列就是在不斷變化的狀態(tài)中依次產(chǎn)生出來的,故有動態(tài)的含義。因此,把處理它的方法稱為動態(tài)規(guī)劃方法。但是,一些與時間沒有關(guān)系的靜態(tài)規(guī)劃,如線性規(guī)劃、非線性規(guī)劃等問題,只要人為地引進(jìn)時間因素,也可把它視為多階段決策問題,用動態(tài)規(guī)劃方法去處理。4.2動態(tài)規(guī)劃基本概念1.階段動態(tài)規(guī)劃方法求解的問題都屬于多階段決策問題。因此需要將所求問題劃分為若干個階段。把描述階段的變量稱為階段變量,用k來表示。在劃分階段時,要求劃分后的階段按照時間或空間特征是有序的,否則問題就無法求解。在下圖中,階段可以劃分為5個,即k=1,2,3,4,5。2.狀態(tài)每個階段所處的客觀條件稱為狀態(tài),它描述了研究問題過程的中間狀況。狀態(tài)就是某階段的出發(fā)位置,既是該階段某支路的起點,又是前一階段某支路的終點。通常一個階段有若干狀態(tài)。在下圖中,第一階段只有狀態(tài){A},第二階段有狀態(tài){B1,B2},第三階段有狀態(tài){C1,C2,C3,C4}。描述狀態(tài)的變量稱為狀態(tài)變量。通常用Sk表示第k階段的狀態(tài)變量。在圖中,S3={C1,C2,C3,C4},該集合就稱為第三階段的可達(dá)狀態(tài)集。4.2動態(tài)規(guī)劃基本概念2.狀態(tài)這里的狀態(tài)必須滿足無后效性(馬爾可夫性),即某階段狀態(tài)一旦確定,就不受這個狀態(tài)以后決策的影響。也就是說,某狀態(tài)以后的過程不會影響以前的狀態(tài),而只與當(dāng)前狀態(tài)有關(guān)。4.2動態(tài)規(guī)劃基本概念

4.2動態(tài)規(guī)劃基本概念4.狀態(tài)轉(zhuǎn)移方程狀態(tài)轉(zhuǎn)移方程是確定從一個狀態(tài)轉(zhuǎn)移到另一個狀態(tài)的過程。給定第k階段的某個狀態(tài)變量sk,在選定好決策uk后,第k+1階段的狀態(tài)變量sk+1也就完全確定下來。這種由sk和uk確定sk+1的對應(yīng)關(guān)系Tk就稱為狀態(tài)轉(zhuǎn)移方程,即sk+1=Tk(sk,uk)。4.2動態(tài)規(guī)劃基本概念5.指標(biāo)函數(shù)和最優(yōu)值函數(shù)指標(biāo)函數(shù)是用來衡量所選定策略優(yōu)劣的一種數(shù)量指標(biāo)。它是定義在全過程和所有后部子過程上確定的數(shù)量函數(shù)。常用Vk,n表示。即Vk,n=Vk,n(sk,uk,sk+1,...,sn+1),k=1,2,...,n。常見的指標(biāo)函數(shù)的形式如下:(1)過程和它的任一子過程的指標(biāo)是它所包含的各階段的指標(biāo)的和。(2)過程和它的任一子過程的指標(biāo)是它所包含的各階段的指標(biāo)的乘積。4.2動態(tài)規(guī)劃基本概念5.指標(biāo)函數(shù)和最優(yōu)值函數(shù)指標(biāo)函數(shù)的最優(yōu)值,稱為最優(yōu)值函數(shù),記為fk(sk)。它表示從第k階段的狀態(tài)sk開始到第n階段的終止?fàn)顟B(tài)的過程,采取最優(yōu)策略所得到的指標(biāo)函數(shù)值。在不同的問題中,指標(biāo)函數(shù)的含義是不同的,它可能是距離、利潤、成本、產(chǎn)品的產(chǎn)量或資源消耗等。4.2動態(tài)規(guī)劃基本概念4.3動態(tài)規(guī)劃基本思想與優(yōu)化原則動態(tài)規(guī)劃的基本思想可以總結(jié)為:(1)將多階段決策過程劃分階段,恰當(dāng)?shù)倪x取狀態(tài)變量、決策變量及定義最優(yōu)指標(biāo)函數(shù),從而把問題化為一組同類型的子問題,然后逐個求解。(2)求解時從邊界條件開始,逆(或順)過程行進(jìn)方向,逐段遞推尋優(yōu)。在每個子問題求解時,都要使用前面已求出的子問題的最優(yōu)結(jié)果,最后一個子問題的最優(yōu)解,就是整個問題的最優(yōu)解。(3)動態(tài)規(guī)劃的基本方程是遞推逐段求解的依據(jù),一般的動態(tài)規(guī)劃的基本方程

4.3動態(tài)規(guī)劃基本思想與優(yōu)化原則下面以例子來說明(3)k=2,狀態(tài)變量可以取2個狀態(tài)B1、B2,它們到達(dá)終點E需要通過C1、C2、C3或C4,同樣需要選擇一條最短的路徑。計算如下:(4)k=1,同理可以計算出從而從起點A到終點E的最短路徑為A-B2-C4-D3-E,最短距離為13。4.3動態(tài)規(guī)劃基本思想與優(yōu)化原則優(yōu)化原則(最優(yōu)子結(jié)構(gòu)性質(zhì)):一個最優(yōu)決策序列的任何子序列本身一定是相對于子序列的初始和結(jié)束狀態(tài)的最優(yōu)決策序列。一般來說,能用動態(tài)規(guī)劃求解的問題具有以下三個性質(zhì):(1)滿足最優(yōu)子結(jié)構(gòu);(2)滿足無后效性;(3)有重疊的子問題。4.3動態(tài)規(guī)劃基本思想與優(yōu)化原則動態(tài)規(guī)劃和分治法的區(qū)別:

分治法拆分的子問題只是求解過程類似,但問題本身是相互獨立的;而動態(tài)規(guī)劃法的子問題之間并不獨立,尤其是相鄰階段的子問題最優(yōu)值函數(shù)是有依賴關(guān)系的,這就是所謂的有重疊的子問題。有重疊的子問題并非動態(tài)規(guī)劃法必須滿足的性質(zhì),但如果沒有這個性質(zhì),那么動態(tài)規(guī)劃法相比其他的算法不具備優(yōu)越性。因此,在使用動態(tài)規(guī)劃法時,從邊界條件開始將某子問題的最優(yōu)解求出并保存起來,然后利用它來求解依賴它的其他子問題,直到求出整個問題的解。4.3動態(tài)規(guī)劃基本思想與優(yōu)化原則4.4.1動態(tài)規(guī)劃的典型實例——背包問題1.問題描述給定n種物品和一個背包。物品i的重量是wi,其價值為vi,背包的承重量為C。應(yīng)如何選擇裝入背包的物品,使得裝入背包中的物品重量在不超過C的前提下,總價值最大?在第2章中,假定每件物品至多只能裝一個,所以所裝的第i件物品xi=0或1,是一個0-1背包問題?,F(xiàn)在問題是每件物品可以裝多個,但仍然不能分割只裝一部分,此時就是一個整數(shù)規(guī)劃問題。2.問題分析(1)不難驗證該背包問題滿足優(yōu)化原則和無后效性,可以使用動態(tài)規(guī)劃法求解。(2)按照所裝物品種類來劃分階段,規(guī)定第i階段可以選擇新裝進(jìn)第i件物品,比如第1階段只能選擇裝第1種物品,第2階段可以選擇裝前兩種物品,……,第k階段可以選擇裝前k種物品,以此下去,最后一階段可以選擇裝入全部的物品,此時的最優(yōu)解就是背包問題的解。4.4.1動態(tài)規(guī)劃的典型實例——背包問題

4.4.1動態(tài)規(guī)劃的典型實例——背包問題3.實例計算:設(shè)v1=1,v2=3,v3=5,v4=9;w1=2,w2=3,w3=4,w4=7;C=10。構(gòu)建遞推計算的備忘錄,根據(jù)優(yōu)化函數(shù)計算過程如下:現(xiàn)在還有一個問題是如何得到這個最大價值12,也就是如何裝物品。4.4.1動態(tài)規(guī)劃的典型實例——背包問題ky1234567891010112233445201334667993013556810101140135569101012

4.4.1動態(tài)規(guī)劃的典型實例——背包問題

4.4.1動態(tài)規(guī)劃的典型實例——背包問題ky1234567891010111111111201222222223012333333340123334344

4.4.2動態(tài)規(guī)劃的典型實例——最長公共子序列問題

4.4.2動態(tài)規(guī)劃的典型實例——最長公共子序列問題

4.4.2動態(tài)規(guī)劃的典型實例——最長公共子序列問題

4.4.2動態(tài)規(guī)劃的典型實例——最長公共子序列問題3.算法設(shè)計算法LCS(X,Y,m,n) else//最后一個字符不同時 ifC[i-1,j]>C[i,j-1]then //滿足情況(2) C[i,j]←C[i-1,j] B[i,j]←‘↑’ endif else //滿足情況(3) C[i,j]←C[i,j-1] B[i,j]←‘←’ end end endforendfor

4.4.2動態(tài)規(guī)劃的典型實例——最長公共子序列問題

4.4.2動態(tài)規(guī)劃的典型實例——最長公共子序列問題

4.4.2動態(tài)規(guī)劃的典型實例——最長公共子序列問題4.實例計算:設(shè)X=<1,3,5,4,2,6,7,8>,Y=<1,4,8,6,7,5>,其中m=8,n=6。構(gòu)建遞推計算的備忘錄,根據(jù)優(yōu)化函數(shù)計算過程如下:4.4.2動態(tài)規(guī)劃的典型實例——最長公共子序列問題ij0123456000000001011111120111111301111124012222250122222601223337012234480123344

4.4.2動態(tài)規(guī)劃的典型實例——最長公共子序列問題根據(jù)以上遞推得下表:下面給出求解的追蹤過程:B[8,6]→B[8,5]→B[7,5]→B[6,4]→B[5,3]→B[5,2]→B[4,2]→B[3,1]→B[2,1]→B[1,1],其中B[7,5],B[6,4],B[4,2],B[1,1]的值為↖,也就是第①種情況,此時應(yīng)該將對應(yīng)的字符加入最長公共子序列中,即為<1,4,6,7>。4.4.2動態(tài)規(guī)劃的典型實例——最長公共子序列問題ij1234561↖←←←←←2↑←←←←←3↑←←←←↖4↑↖←←←←5↑↑←←←←6↑↑←↖←←7↑↑←↑↖←8↑↑↖←↑←6.算法效率分析在算法LCS中,兩重for循環(huán)時間復(fù)雜度為,在算法TrackSolution中,最多標(biāo)記m+n次,時間復(fù)雜度為。因此,綜合起來整個算法的時間復(fù)雜度為,它從蠻力法的降至,可見在求解這個問題中動態(tài)規(guī)劃法的優(yōu)越性。

4.4.2動態(tài)規(guī)劃的典型實例——最長公共子序列問題

4.4.3動態(tài)規(guī)劃的典型實例——最大字段和問題

4.4.3動態(tài)規(guī)劃的典型實例——最大字段和問題

4.4.3動態(tài)規(guī)劃的典型實例——最大字段和問題

4.4.3動態(tài)規(guī)劃的典型實例——最大字段和問題3.算法設(shè)計算法MaxConSubSeqSum_DP(A[],n)輸入:序列A[1..n]輸出:最大子段和maxSum,對應(yīng)的開始和結(jié)束位置begin和endmaxSum←-INFb←

0//b是前一個最大子段和fori←

1tondo ifb>0then //情況(1),應(yīng)續(xù)上A[i] b←b+A[i] endif else //情況(2),應(yīng)拋棄A[1..i-1]的最大子段,重新開始選取子段 b←A[i] t←

i //記錄重新開始的位置 end

4.4.3動態(tài)規(guī)劃的典型實例——最大字段和問題3.算法設(shè)計 ifb>maxSumthen//選取C[1],...C[i-1]中最大的子段和 maxSum←b begin←

t end←

i endifendfor4.4.3動態(tài)規(guī)劃的典型實例——最大字段和問題4.實例計算:設(shè)A=<2,-3,5,9,-2,1>。構(gòu)建遞推計算的備忘錄,根據(jù)優(yōu)化函數(shù)計算過程如下:C[1]=A[1]=2>0→C[2]=C[1]+A[2]=2-3=-1<0→C[3]=A[3]=5>0→C[4]=C[3]+A[4]=5+9=14>0→C[5]=C[4]+A[5]=14-2=12>0→C[6]=C[5]+1=13。設(shè)立追蹤解的標(biāo)記函數(shù)B[i],當(dāng)C[i]>0

溫馨提示

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

評論

0/150

提交評論