解01背包問題的動態(tài)規(guī)劃算法.doc

解01背包問題的動態(tài)規(guī)劃算法.doc

ID:55040204

大?。?2.50 KB

頁數(shù):6頁

時間:2020-04-26

解01背包問題的動態(tài)規(guī)劃算法.doc_第1頁
解01背包問題的動態(tài)規(guī)劃算法.doc_第2頁
解01背包問題的動態(tài)規(guī)劃算法.doc_第3頁
解01背包問題的動態(tài)規(guī)劃算法.doc_第4頁
解01背包問題的動態(tài)規(guī)劃算法.doc_第5頁
資源描述:

《解01背包問題的動態(tài)規(guī)劃算法.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、解0/1背包問題的動態(tài)規(guī)劃算法摘要:本文通過研究動態(tài)規(guī)劃原理,提出了根據(jù)該原理解決0/1背包問題的方法與算法實(shí)現(xiàn),并對算法的正確性作了驗(yàn)證.觀察程序運(yùn)行結(jié)果,發(fā)現(xiàn)基于動態(tài)規(guī)劃的算法能夠得到正確的決策方案且比窮舉法有效.關(guān)鍵字:動態(tài)規(guī)劃;0/1背包;約束條件;序偶;決策序列;支配規(guī)則1、引言科學(xué)研究與工程實(shí)踐中,常常會遇到許多優(yōu)化問題,而有這么一類問題,它們的活動過程可以分為若干個階段,但整個過程受到某一條件的限制。這若干個階段的不同決策的組合就構(gòu)成一個完整的決策。0/1背包問題就是一個典型的在資源有限的條件下,追求總的收益最大的資源有效分配的優(yōu)化問題。對于0/1背包問題,

2、我們可以這樣描述:設(shè)有一確定容量為C的包及兩個向量C’=(S1,S2,……,Sn)和P=(P1,P2,……,PN),再設(shè)X為一整數(shù)集合,即X=1,2,3,……,N,X為SI、PI的下標(biāo)集,T為X的子集,那么問題就是找出滿足約束條件∑Si〈=C,使∑PI獲得最大的子集T。在實(shí)際運(yùn)用中,S的元素可以是N個經(jīng)營項(xiàng)目各自所消耗的資源,C可以是所能提供的資源總量,P的元素可是人們從各項(xiàng)項(xiàng)目中得到的利潤。0/1背包問題是工程問題的典型概括,怎么樣高效求出最優(yōu)決策,是人們關(guān)心的問題。2、求解問題的動態(tài)規(guī)劃原理與算法2.1動態(tài)規(guī)劃原理的描述求解問題的動態(tài)規(guī)劃有向前處理法向后處理法兩種,這

3、里使用向前處理法求解0/1背包問題。對于0/1背包問題,可以通過作出變量X1,X2,……,XN的一個決策序列來得到它的解。而對于變量X的決策就是決定它是取0值還是取1值。假定決策這些X的次序?yàn)閄n,XN-1,……,X0。在對X0做出決策之后,問題處于下列兩種狀態(tài)之一:包的剩余容量是M,沒任何效益;剩余容量是M-w,效益值增長了P。顯然,之后對Xn-1,Xn-2,……,X1的決策相對于決策X所產(chǎn)生的問題狀態(tài)應(yīng)該是最優(yōu)的,否則Xn,……,X1就不可能是最優(yōu)決策序列。如果設(shè)Fj(X)是KNAP(1,j,X)最優(yōu)解的值,那么Fn(M)就可表示為FN(M)=max(fn(M),fn

4、-1(M-wn)+pn)}?。?)對于任意的fi(X),這里i>0,則有fi(X)=max{fi-1(X),fi-1(X-wi)+pi}(2)為了能由前向后推而最后求解出FN(M),需從F0(X)開始。對于所有的X>=0,有F0(X)=0,當(dāng)X<0時,有F0(X)等于負(fù)無窮。根據(jù)(2),可求出0〈X〈W1和X〉=W1情況下F1(X)的值。接著由(2)不斷求出F2,F(xiàn)3,……,F(xiàn)N在X相應(yīng)取值范圍內(nèi)的值。2.20/1背包問題算法的抽象描述(1)初始化各個元素的重量W[i]、效益值P[i]、包的最大容量M;(2)初始化S0;6(1)生成Si;a.在中Si-1找滿足約束條件的第

5、R對序偶;b.生成S1i;c.清除不滿足條件的序偶;d.將Sn-1中滿足條件的序偶復(fù)制到Sn中;(4)對Sn+1置初值;(5)若不滿足循環(huán)次數(shù)轉(zhuǎn)(3),否則轉(zhuǎn)(6);(6)用回溯法確定決策序列;終止程序。2.3計(jì)算復(fù)雜性分析假設(shè)Si的序偶是

6、Si

7、。在i>0的情況下,每個Si由S1i-1和S1i歸并而成,并且|S1i

8、<=

9、Si-1

10、,因此|Si

11、<=2

12、Si-1

13、。在最壞情況下沒有序偶被清除,所以對

14、Si

15、求和(i=0,1,2,...n-1)的結(jié)果是2n-1,也就是說DKNAP的空間復(fù)雜度為O(2n)。由Si-1生成Si需要

16、Si-1

17、

18、的時間,所以在計(jì)算S0,S1,S

19、2,……,Sn-1時所消耗的總時間為(∑

20、Si-1

21、),0〈=i〈=n-1。由于|Si|〈=2n,所以計(jì)算這些Si總的時間為O(2n)。該算法的時間復(fù)雜性為O(2n),似乎表明當(dāng)N很大時它的有效性不會讓人滿意,但由于支配規(guī)則的引入,很好的清除了不滿足約束的序偶,因而該算法在很多情況下都能在可接受的時間內(nèi)求出決策序列。2.4基于動態(tài)規(guī)劃的算法源程序   由于算法源程序有一定的篇幅,將其附后。3、性能測試3.1測試問題為了驗(yàn)證算法的正確性與有效性,用兩個數(shù)組P[N]和W[N]分別存儲始記錄C’和P,記錄為用窮舉法已求出最優(yōu)決策的實(shí)例?,F(xiàn)分別取N=3,4,6,10進(jìn)行實(shí)驗(yàn)。3.

22、2試驗(yàn)結(jié)果與分析為了便于說明問題,現(xiàn)將實(shí)驗(yàn)過程中的N取不同值的一組向量C’和P(也就是重量與效益值)記錄如下:N=3:C’=(2,3,4);P=(1,2,5);M=6;N=4:C’=(2,4,6,7);P=(6,10,12,13);M=11;N=6:C’=(100,50,20,10,7,3);P=(90,70,30,20,5,15);M=165;N=10:C’=(2,4,5,7,10,14,19,20,25,30);P=(1,3,4,5,10,15,20,25,36,28);M=70;運(yùn)行程序,與上述實(shí)例對應(yīng)的決策序列為(10

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

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

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