上面已經介紹了動態規劃模型的基本組成,現在需要解決的問題是:什麼樣的「多階段決策問題」才可以採用動態規劃的方法求解?
一般來說,能夠採用動態規劃方法求解的問題必須滿足.最優化原理和.無後效性原則。
(1)動態規劃的最優化原理。作為整個過程的最優策略具有如下性質:無論過去的狀態和決策如何,對前面的決策所形成的當前狀態而言,餘下的諸決策必須構成最優策略。
可以通俗地理解為子問題的區域性最優將導致整個問題的全域性最優,即問題具有最優子結構的性質,也就是說乙個問題的最優解只取決於其子問題的最優解,非最優解對問題的求解沒有影響。在例題1最短路徑問題中,a到e的最優路徑上的任一點到終點e的路徑也必然是該點到終點e的一條最優路徑,滿足最優化原理。下面來討論另外乙個問題。
【例題2】餘數最少的路徑。
如圖所示,有4個點,分別是a、b、c、d,相鄰兩點用兩條連線c2k
,c2k-1
(1≤k≤3)表示兩條通行的道路。連線上的數字表示道路的長度。定義從a到d的所有路徑中,長度除以4所得餘數最小的路徑為最優路徑。
求一條最優路徑。
【分析】在這個問題中,如果還按照例題1中的方法去求解就會發生錯誤。按照例題1的思想,a的最優取值可以由b的最優取值來確定,而b的最優取值為(1+3) mod 4 = 0,所以a的最優值應為2,而實際上,路徑c1-c3-c5可得最優值為(2+1+1) mod 4 = 0,所以,b的最優路徑並不是a的最優路徑的子路徑,也就是說,a的最優取值不是由b的最優取值決定的,即其不滿足最優化原理,問題不具有最優子結構的性質。
由此可見,並不是所有的「決策問題」都可以用「動態規劃」來解決,運用「動態規劃」來處理問題必須滿足最優化原理。
(2)動態規劃的無後效性原則。所謂無後效性原則,指的是這樣一種性質:某階段的狀態一旦確定,則此後過程的演變不再受此前各狀態及決策的影響。也就是說,「未來與過去無關」,當前的狀態是此前歷史的乙個完整總結,此前的歷史只能通過當前的狀態去影響過程未來的演變。具體地說,如果乙個問題被劃分各個階段之後,階段 i 中的狀態只能由階段 i+1 中的狀態通過狀態轉移方程得來,與其他狀態沒有關係,特別是與未發生的狀態沒有關係,這就是無後效性。從圖論的角度去考慮,如果把這個問題中的狀態定義成圖中的頂點,兩個狀態之間的轉移定義為邊,轉移過程中的權值增量定義為邊的權值,則構成乙個有向無環加權圖,因此,這個圖可以進行「拓撲排序」,至少可以按他們拓撲排序的順序去劃分階段。
看一看下面的兩個具體例子。
【例題3】貨郎擔問題。對於平面給定的n個點,程式設計確定一條鏈結各點的、閉合的遊歷路線問題。圖中給出了7個點的情況問題的解。
【例題4】旅行路線問題。在貨郎擔問題的基礎上,若規定這種遊歷路線先從最左邊開始,嚴格地由左至右到最右邊的點,然後再嚴格地由右至左到出發點,求整個路程最短的路徑長度。圖中給出了7個點問題的解。
【分析】這兩個問題看起來很非常相似,但本質上是完全不同的。為了方便討論,可以將每個頂點標記號碼。由於必然經過最右邊的頂點7,所以一條路(p1-p2)可以看做兩條路(p1-7)與(p2-7)的結合。因此,這個題目的狀態可以用兩條道路結合的形式表示。可以把這些狀態中,兩條路中起始頂點相同的狀態歸於乙個階段,設為階段[p1,p2]。
那麼,對於旅行路線問題來說,階段[p1,p2]如果可以由階段[q1,q2]推出,則必須滿足的條件就是:pl < q1或p2 < q2。例如,階段[3,4]中的道路可以由階段[3,5]中的道路加一條邊4—5得出,而階段[3,5]的狀態卻無法由階段[3,4]中的狀態得出,因為在旅行路線問題的要求中必須嚴格地由左到右來旅行。所以如果已經知道了階段[3,4]中的狀態,則階段[3,5]中的狀態必然已知,因此,問題滿足無後效性原則,可以考慮用動態規劃方法求解。
而對於貨郎擔問題,階段與階段之間沒有什麼必然的「順序」。如道路屬於階段[3,4],可由屬於階段[2,4]的道路推出;而道路屬於階段[2,4],可由屬於階段[3,4]的道路推出。如果以頂點表示階段,推出關係表示邊,那麼,階段[3,4]與階段[2,4]對應的關係就如圖右所示。可以很清晰地看出,這兩個階段的關係是「有後效性」的。因為這個圖中存在「環路」。對於這個問題是不能像上乙個問題那樣來解決的。
關於Bellman最優化原理和動態規劃的個人理解
最近一直在研究模板匹配方法的過程,起先一直對模板匹配的過程不能夠有乙個充分的理解,開始時是對模板序列和樣本序列的組織不能夠理解,後期又是對其中的關係不能夠有清醒的認識,再之後又對bellman的最優化原理不能夠很好的理解,總之是沒完沒了的看書,找方法。現在對這個過程做乙個個人的總結 一 基於最優路徑...
最優化 整數規劃
其實就是在普通線性規劃上加了整數這一概念,要求所給的最優解為整數 在實際生活中應用居多,對於最優解為較小的整數時的規劃問題多有針對 對於部分整數規劃問題,是可以用求解標準線性規劃的思想進行求解,比如單純形法 但是懟整數規劃的形式有所要求 其中值得注意的兩點 1.a的內部所有元素都為整數 2.a的任何...
動態規劃 最優編輯
int findmincost string a,int n,string b,int m,int c0,int c1,int c2 初始化矩陣 dp 0 0 0 for int i 1 i m 1 i for int j 1 j n 1 j for int i 1 i n 1 i return d...