動態規劃第一部分

2022-09-14 09:57:04 字數 4622 閱讀 1648

近年來,涉及動態規劃的各種競賽題越來越多,每一年的noi幾乎都至少有一道題目需要用動態規劃的方法來解決;而競賽對選手運用動態規劃知識的要求也越來越高,已經不再停留於簡單的遞推和建模上了。

要了解動態規劃的概念,首先要知道什麼是多階段決策問題。

一、多階段決策問題

如果一類活動過程可以分為若干個互相聯絡的階段,在每乙個階段都需作出決策(採取措施),乙個階段的決策確定以後,常常影響到下乙個階段的決策,從而就完全確定了乙個過程的活動路線,則稱它為多階段決策問題。

各個階段的決策構成乙個決策序列,稱為乙個策略。每乙個階段都有若干個決策可供選擇,因而就有許多策略供我們選取,對應於乙個策略可以確定活動的效果,這個效果可以用數量來確定。策略不同,效果也不同,多階段決策問題,就是要在可以選擇的那些策略中間,選取乙個最優策略,使在預定的標準下達到最好的效果.

讓我們先來看下面的例子:如圖所示的是乙個帶權有向的多段圖,要求從a到d的最短路徑的長度(下面簡稱最短距離)。

我們可以搜尋,列舉圖中的每條路徑,但當圖的規模大起來時,搜尋的效率顯然不可能盡人意。讓我們來試用動態規劃的思路分析這道題:從圖中可以看到,a點要到達d點必然要經過b1和b2中的乙個,所以a到d的最短距離必然等於b1到d的最短距離加上5,或是b2到d的最短距離加上2。

同樣的,b1到d的最短距離必然等於c1到d的最短距離加上3或是c2到d的最短距離加上2,……。

我們設g[i]為點i到點d的距離,顯然g[c1]=4,g[c2]=3,g[c3]=5,根據上面的分析,有:

g[b1]=min=5,

g[b2]=min=9,

再就有g[a]=min=10,

所以a到d的最短距離是10,最短路徑是ab1c2d。

二、動態規劃的術語

1.階段

把所給求解問題的過程恰當地分成若干個相互聯絡的階段,以便於求解,過程不同,階段數就可能不同.描述階段的變數稱為階段變數。在前面的例子中,第乙個階段就是點a,而第二個階段就是點a到點b,第三個階段是點b到點c,而第四個階段是點c到點d。

2.狀態

狀態表示每個階段開始面臨的自然狀況或客觀條件,它不以人們的主觀意志為轉移,也稱為不可控因素。在上面的例子中狀態就是某階段的出發位置,它既是該階段某路的起點,同時又是前一階段某支路的終點。

在前面的例子中,第乙個階段有乙個狀態即a,而第二個階段有兩個狀態b1和b2,第三個階段是三個狀態c1,c2和c3,而第四個階段又是乙個狀態d。

狀態通常可以用乙個或一組數來描述,稱為狀態變數。

3.無後效性

我們要求狀態具有下面的性質:如果給定某一階段的狀態,則在這一階段以後過程的發展不受這階段以前各段狀態的影響,所有各階段都確定時,整個過程也就確定了。換句話說,過程的每一次實現可以用乙個狀態序列表示,在前面的例子中每階段的狀態是該線路的始點,確定了這些點的序列,整個線路也就完全確定。

從某一階段以後的線路開始,當這段的始點給定時,不受以前線路(所通過的點)的影響。狀態的這個性質意味著過程的歷史只能通過當前的狀態去影響它的未來的發展,這個性質稱為無後效性。

4.決策

乙個階段的狀態給定以後,從該狀態演變到下一階段某個狀態的一種選擇(行動)稱為決策。在許多問題中,決策可以自然而然地表示為乙個數或一組數。不同的決策對應著不同的數值。

描述決策的變數稱決策變數,因狀態滿足無後效性,故在每個階段選擇決策時只需考慮當前的狀態而無須考慮過程的歷史。

5.策略

由每個階段的決策組成的序列稱為策略。對於每乙個實際的多階段決策過程,可供選取的策略有一定的範圍限制,這個範圍稱為允許策略集合。允許策略集合中達到最優效果的策略稱為最優策略。

給定k階段狀態變數x(k)的值後,如果這一階段的決策變數一經確定,第k+1階段的狀態變數x(k+1)也就完全確定,即x(k+1)的值隨x(k)和第k階段的決策u(k)的值變化而變化,那麼可以把這一關係看成(x(k),u(k))與x(k+1)確定的對應關係,用x(k+1)=tk(x(k),u(k))表示。這是從k階段到k+1階段的狀態轉移規律,稱為狀態轉移方程。

6.最優性原理

作為整個過程的最優策略,它滿足:相對前面決策所形成的狀態而言,餘下的子策略必然構成「最優子策略」。最優性原理實際上是要求問題的最優策略的子策略也是最優。

讓我們通過對前面的例子再分析來具體說明這一點:從a到d,我們知道,最短路徑是ab1c2d,這些點的選擇構成了這個例子的最優策略,根據最優性原理,這個策略的每個子策略應是最優:ab1c2是a到c2的最短路徑,b1c2d也是b1到d的最短路徑……事實正是如此,因此我們認為這個例子滿足最優性原理的要求。

例1、數字三角形

如下所示為乙個數字三角形.請編乙個程式計算從頂到底的某處的一條路徑,使該路徑所經過的數字的總和最大.只要求輸出總和.

■ 每一步可沿左斜線向下或右斜線向下走;

■ 三角形行數小於等於100;

■ 三角形中的數字為

7狀態轉移方程:f[i,j]:=max+a[i,j];

邊界條件:f[n,j]:=a[n,j] (1<=j<=n)

program st;

var i,j,n:integer;

a:array[1..100,1..100] of integer;

f,g:array[1..100,1..100] of longint;

begin

read(n);

for i:=1 to n do

for j:=1 to i do

read(a[i,j]);

for i:=1 to n do f[n,i]:=a[n,i];

fillchar(g,sizeof(g),0);

for i:=n-1 downto 1 do

for j:=1 to i do

if f[i+1,j]>f[i+1,j+1] then begin f[i,j]:=f[i+1,j]+a[i,j];g[i,j]:=0 end

else begin f[i,j]:=f[i+1,j+1]+a[i,j];g[i,j]:=1 end;

writeln(f[1,1]);writeln(a[1,1]);

i:=1;j:=1;

while i begin if g[i,j]=1 then inc(j);

inc(i);

writeln(a[i,j]);

end;

end.

例2:最長不下降序列(hnoi』97)

一、問題描述

設有整數序列b1,b2,b3,…,bm,若存在i1例如求出數列7, 4, 8, 1, 6, 2, 9, 3, 5, 4, 6, 9的最長不下降序列

輸入:整數序列

輸出:最大長度n和所有長度為n的序列個數total

二、分析

此題分為兩個部分:求最大不下降序列長度和序列個數。

首先我們考慮求最大長度。設f(i)為前i個數中的最大不下降序列長度。由題意不難得知,要求f(i),需要求得f(1)—f(i-1),然後選擇乙個最大的f(j) ( jbj ),那麼前i個數中最大不下降序列便是前j個數中最大不下降序列後新增bi而得。

可見此任務滿足最優子結構,可以用動態規劃解決。

通過上面的分析可得狀態轉移方程如下:

f(i)=max(j 邊界為f(1)=1

三、參考程式

順推:read(n);

for i:=1 to n do read(a[i]);

for i:=2 to n do

begin

max:=0;

for j:=1 to i-1 do

if (a[j]<=a[i]) and (f[j]>max) then

max:=f[j];

f[i]:=max+1;

end;

max:=0;

for i:=1 to n do if maxwriteln(max

倒推:read(n);

for i:=1 to n do read(a[i]);

f[n,1]:=1;

for i:=1 to n do f[i,2]:=0;

for i:=n-1 downto 1 do

begin max:=0;

for j:=i+1 to n do

if (a[i]<=a[j]) and (f[j,1]>max) then begin max:=f[j,1];k:=j end;

f[i,1]:=max+1;f[i,2]:=k;

end;

max:=0;

for i:=1 to n do

if maxwriteln(max);

while k<>0 do

begin write(a[k],' ');

k:=f[k,2];

end例3:01揹包問題

在m件物品取出若干件放在承重為w的揹包裡,每件物品的重量為w1,w2……wn,與之相對應的價值為p1,p2……pn。求出獲得最大價值的方案。

注意:在本題中,所有的重量值均為整數。

例如:揹包最大承重為10 ,可放5件物品,其重量和價值分別為

[演算法分析]:

階段:在前n件物品中,選取若干件物品放入揹包中;

狀態:在前n件物品中,選取若干件物品放入所剩空間為w的揹包中的所能獲得的最大價值;

決策:第n件物品放或者不放;

狀態轉移方程:f[i,j]=max

我們用f[i,j]表示在前 i 件物品中選擇若干件放在所剩空間為 j 的揹包裡所能獲得的最大價值

演算法設計如下:

read(m,w);

作業 第一部分

第一部分投影基本知識 一 單選題 1 已知m點在n點正前方,則m和n兩點的 b 座標值不相等。a x方向 b y方向 c z方向 d 所有方向 2 已知點m座標 10,20,10 點n座標 10,20,0 則以下描述m n兩點相對位置關係的說法哪一種是正確的?a 點m位於點n正下方b 點m位於點n正...

第一部分概述

第一章良好農業規範 gap 的發展概況 第一節良好農業規範 gap 產生的背景和概念 一 良好農業規範產生的背景 近三 四十年,農業繁榮得益於化肥 農藥 良種 拖拉機等增產要素的產生,而隨著整個農業生產水平的提高和各種農業生產要素的日益成熟,這些要素對增產的貢獻率趨減。由於農業生產經營不當導致的生態...

第一部分專案策劃

專案管理手冊 電力工程事業部 2012年8月 目錄第一章專案定位 1 1.1 專案投標階段 1 1.2 專案中標後 1 1.3 專案定位的方法 1 1.4 專案定位與調整 2 第二章專案組織機構 3 2.1專案部組織機構 3 2.2 專案部組織機構圖 5 第三章專案經理崗位職責 6 3.1 崗位目的...