動態規劃 1

2021-06-16 07:54:59 字數 3743 閱讀 8353

動態規劃是對最優化問題的一種新的演算法設計方法。由於各種問題的性質不同,確定最優解的條件也互不相同,因而動態規劃的沒計法對不同的問題,有各具特色的表示方式。不存在一種萬能的動態規劃演算法。但是可以通過對若干有代表性的問題的動態規劃演算法進行討論,學會這一設計方法。

多階段決策過程最優化問題

——動態規劃的基本模型

在現實生活中,有一類活動的過程,由於它的特殊性,可將過程分成若干個互相聯絡的階段,在它的每一階段都需要作出決策,從而使整個過程達到最好的活動效果。因此各個階段決策的選取不能任意確定,它依賴於當前面臨的狀態,又影響以後的發展。當各個階段決策確定後,就組成乙個決策序列,因而也就確定了整個過程的一條活動路線。這種把乙個問題看做是乙個前後關聯具有鏈狀結構的多階段過程就稱為多階段決策過程,這種問題稱為多階段決策最優化問題。

【例題1】最短路徑問題。圖中給出了乙個地圖,地圖中每個頂點代表乙個城市,兩個城市間的連線代表道路,連線上的數值代表道路的長度。現在,想從城市a到達城市e,怎樣走路程最短,最短路程的長度是多少?

【分析】把從a到e的全過程分成四個階段,用k表示階段變數,第1階段有乙個初始狀態a,兩條可供選擇的支路abl、ab2;第2階段有兩個初始狀態b1、 b2,b1有三條可供選擇的支路,b2有兩條可供選擇的支路……。用dk(xk,xk+1)表示在第k階段由初始狀態xk到下階段的初始狀態xk+1的路徑距離,fk(xk)表示從第k階段的xk到終點e的最短距離,利用倒推方法求解a到e的最短距離。具體計算過程如下:

s1:k=4,有:f4(d1)=3,f4(d2)=4,f4(d3)=3

s2: k=3,有:f3(c1)=min=min=8

f3(c2)=d3(c2,d1)+f4(d1)=5+3=8

f3(c3)=d3(c3,d3)+f4(d3)=8+3=11

f3(c4)=d3(c4,d3)+f4(d3)=3+3=6

s2: k=2,有:f2(b1)=min=min=9

f2(m)=min=min=10

s4:k=1,有:f1(a)=min=min=13

因此由a點到e點的全過程的最短路徑為a—>b2一》c4—>d3—>e。最短路程長度為13。

從以上過程可以看出,每個階段中,都求出本階段的各個初始狀態到過程終點e的最短路徑和最短距離,當逆序倒推到過程起點a時,便得到了全過程的最短路徑及最短距離,同時附帶得到了一組最優結果(即各階段的各狀態到終點e的最優結果)。

在上例的多階段決策問題中,各個階段採取的決策,一般來說是與時間有關的,決策依賴於當前狀態,又隨即引起狀態的轉移,乙個決策序列就是在變化的狀態中產生出來的,故有「動態」的含義,稱這種解決多階段決策最優化問題的方法為動態規劃方法。

根據上例分析和動態規劃的基本概念,可以得到動態規劃的基本模型如下:

(1)確定問題的決策物件。

(2)對決策過程劃分階段。

(3)對各階段確定狀態變數。

(4)根據狀態變數確定費用函式和目標函式。

(5)建立各階段狀態變數的轉移過程,確定狀態轉移方程。

動態規劃的基本知識

動態規劃是研究一類最優化問題的方法,在經濟、工程技術、企業管理、工農業生產及軍事等領域中都有廣泛的應用。近年來,在acm/icpc中,使用動態規劃(或部分應用動態規劃思維)求解的題不僅常見,而且形式也多種多樣。而在與此相近的各類資訊學競賽中,應用動態規劃解題已經成為一種趨勢,這和動態規劃的優勢不無關係。

1、動態規劃的常用名詞

在學習動態規劃之前,先得對下面的名詞有所了解。本書將標準名詞作了一些簡化,便於大家更好的理解。

(1)狀態(smte)

對於乙個問題,所有可能到達的情況(包括初始情況和目標情況)都稱為這個問題的乙個狀態。

(2)狀態變數(sk)

對每個狀態k關聯乙個狀態變數sk,它的值表示狀態k所對應的問題的當前解值。

(3)決策(decision)

決策是一種選擇,對於每乙個狀態而言,你都可以選擇某一種路線或方法,從而到達下乙個狀態。

(4)決策變數(dk)

在狀態k下的決策變數dk的值表示對狀態k當前所做出的決策。

(5)策略

策略是乙個決策的集合,在我們解決問題的時候,我們將一系列決策記錄下來,就是乙個策略,其中滿足某些最優條件的策略稱之為最優策略。

(6)狀態轉移函式(t)

從乙個狀態到另乙個狀態,可以依據一定的規則來前進。我們用乙個函式t來描述這樣的規則,它將狀態i和決策變數di對映到另乙個狀態j,記為t(i,di)=j

(7)狀態轉移方程(f)

狀態轉移方程f描述了狀態變數之間的數學關係。一般來說,與最優化問題相應,狀態轉移方程表示si的值最優化的條件,或者說是狀態i所對應問題的最優解值的計算公式,用代數式表示就是:

si=f()

2、最優化原理

2023年美國數學家r.bellman等人,根據一類多階段問題的特點,把多階段決策問題變換為一系列互相聯絡的單階段問題,然後逐個加以解決。一些靜態模型,只要人為地引進「時間」因素,分成時段,就可以轉化成多階段的動態模型,用動態規劃方法去處理。與此同時,他提出了解決這類問題的「最優化原理」(principle of optimality):

「乙個過程的最優決策具有這樣的性質:即無論其初始狀態和初始決策如何,其今後諸策略對以第乙個決策所形成的狀態作為初始狀態的過程而言,必須構成最優策略」。簡言之,乙個最優策略的子策略,對於它的初態和終態而言也必是最優的。

這個「最優化原理」如果用數學化一點的語言來描述的話,就是:假設為了解決某一優化問題,需要依次作出n個決策d1,d2,…,dn,如若這個決策序列是最優的,對於任何乙個整數k,1 < k < n,不論前面k個決策是怎樣的,以後的最優決策只取決於由前面決策所確定的當前狀態,即以後的決策dk+1,dk+2,…,dn也是最優的。

最優化原理是動態規劃的基礎。任何乙個問題,如果失去了這個最優化原理的支援,就不可能用動態規劃方法計算。

3、什麼是動態規劃

動態規劃是運籌學的乙個分支。與其說動態規劃是一種演算法,不如說是一種思維方法來得更貼切。因為動態規劃沒有固定的框架,即便是應用到同一道題上,也可以建立多種形式的求解演算法。許多隱式圖上的演算法,例如求單源最短路徑的dijkstra演算法、廣度優先搜尋演算法,都滲透著動態規劃的思想。還有許多數學問題,表面上看起來與動態規劃風馬牛不相及,但是其求解思想與動態規劃是完全一致的。

因此,動態規劃不像深度或廣度優先那樣可以提供一套模式,需要的時候,取來就可以使用;它必須對具體問題進行具體分析處理,需要豐富的想象力去建立模型,需要創造性的思想去求解。

4、動態規劃適於解決什麼樣的問題

準確地說,動態規劃不是萬能的,它只適於解決一定條件的最優策略問題。

或許,大家聽到這個結論會很失望:其實,這個結論並沒有削減動態規劃的光輝,因為屬於上面範圍內的問題極多,還有許多看似不是這個範圍中的問題都可以轉化成這類問題。

上面所說的「滿足一定條件」主要指下面兩點:

(1)狀態必須滿足最優化原理;

(2)狀態必須滿足無後效性。

所謂的無後效性是指:「過去的決策只能通過當前狀態影響未來的發展,當前的狀態是對以往決策的總結」。

這條特徵說明什麼呢?它說明動態規劃適於解決當前決策和過去狀態無關的問題。狀態,出現在策略的任何乙個位置,它的地位都是相同的,都可以實施同樣的決策。這就是無後效性的內涵。 

5、用動態規劃解題的好處

說了這麼多的動態規劃,它到底給我們解題能帶來什麼好處呢?

其實動態規劃的最大優勢在於它具有極高的效率,而且動態規劃還有其他的優勢,例如:動態規劃可以得出一系列解,演算法清晰簡便,程式易編、易調,等等。

動態規劃1

維基百科 動態規劃是一種在數學和 電腦科學 中使用的,用於求解包含 重疊子問題 的最優化 問題的方法。其基本思想是,將原問題分解為相似的子問題,在求解的過程中通過子問題的解求出原問題的解。動態規劃的思想是多種演算法的基礎,被廣泛應用於電腦科學和工程領域。比較著名的應用例項有 求解 最短路徑 問題,揹...

動態規劃1

首先,動態規劃的最基本要求在於無後效性 即結果態之和之前某態有關,並且對於該之前態我們並不關心它到底是怎麼來的 和n到n 1的跳躍一樣,它也是依賴轉移方程得來。比如0 1揹包 我們只要永遠依賴dp i j max dp i 1 j,dp i 1 j wi vi 這個轉移方程即可,並不在乎它具體細節。...

動態規劃 1

p1060 開心的金明 揹包問題 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n元錢就行 今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的n元。於是,他...