在離散規劃中,狀態是「可數」的,有限的。
離散可行規劃:算法
爲了方便表達離散可行規劃的定義,一般採用有向狀態轉移圖來表示,圖上的頂點集合表示狀態空間 X,只有當兩頂點之間可狀態轉移時,圖上兩頂點之間的有向邊才存在。初始狀態和目標集能夠表示爲圖上特別指定的頂點。數據結構
上圖顯示了通用圖搜索算法模板,其中有幾點須要注意:Q 內部如何排序,如何判斷狀態屬於目標狀態,如何獲得計劃(動做序列),如何判斷該狀態是否已經訪問過,是否須要更新狀態代價值(如在Dijkstra 和 A* 算法)函數
幾種前向搜索算法,區別在於定義了Q 這個優先級隊列內部不一樣的排序方式優化
當兩棵搜索樹相遇時,搜索結束,返回成功。若是其中任一搜索樹的優先級隊列爲空, 且兩顆樹未相遇,則搜索結束,返回失敗。spa
上述全部的搜索算法遵循如下一些共同的模式:3d
\(L\left ( \pi _{K} \right ) = \sum_{k=1}^{K}l(x_{k},u_{k}) + l_{F}(x_{F})\)blog
經過引入代價項Lf(xf)這一技巧,將離散可行規劃中的約束轉換爲優化問題代價函數中的一項。排序
基本思想: 最優規劃解決方案的子組成方案也是最優的,因而能夠經過動態規劃方法解決。在最優定長規劃中,採用一種迭代算法,稱爲 值迭代,它的主要思想是在狀態空間中迭代計算最優的 cost-to-go(或 cost-to-come)。Dijkstra’s algorithm 也是 值迭代的一種方式。隊列
基本思想: 在狀態空間中迭代計算最優的 cost-to-go 代價值。在特殊場景下,該方法退化爲 Dijkstra 方法。ip
符號: $ G_{k}^{ \ast} $ :F 表示最後一步,$ G_{k}^{ \ast} $ 表示從第 k 步到 最後一步(F 步)最佳計劃下的累計代價
初始條件: $ G_{F}^{ \ast}\left ( x_{F} \right ) = l_{F}\left ( x_{F} \right ) $
結論:
推導過程:
值迭代過程:
$ G_{F}^{ \ast}\rightarrow G_{K}^{ \ast}\rightarrow G_{K-1}^{ \ast}\cdots G_{k}^{ \ast}\rightarrow G_{k-1}^{ \ast}\rightarrow\cdots G_{2}^{ \ast}\rightarrow G_{1}^{ \ast} $
時間複雜度: $ O\left ( K\left | X \right |\left | U \right | \right ) $
離散最優規劃標準定義\(L\left ( \pi _{K} \right ) = \sum_{k=1}^{K}l(x_{k},u_{k}) + l_{F}(x_{F})\),該時間複雜度爲 $ O\left | U \right |^K $,經過引入動態規劃,極大下降了複雜度。
舉例:
如上圖,a 列 $ G_{1}^{ \ast} $ 的值 $G_{1}^{ \ast}\left ( a \right ) $ 表明了 5 步定步長最優規劃的累計代價爲 6 。那麼如何體現動態規劃思想下降時間複雜度呢?
當計算 $ G_{4}^{ \ast} $ 的值時,只有 b 和 c 能夠只通過 1 步到達 d,再通過1 步到達目標 e,所以只有\(G_{4}^{ \ast}\left ( b \right )\)、\(G_{4}^{ \ast}\left ( c \right )\)爲有限值。再計算 \(G_{3}^{ \ast}\) 的值時,只有通過 b 和 c 的路徑纔可能通過 5 步到達 目標 e,所以縮小了考慮的範圍,具體程序表現爲選擇到達下一頂點的最小累計代價的行爲。
那麼,獲得了最佳cost-to-go的表,如何提取最佳計劃(或路徑)?
一種解決方案是爲每一個頂點存儲最優 \(G_{n}^{ \ast}\)所對應的行爲,所以這樣須要的內存複雜度爲 \(O(K\left | X \right |)\) 。
基本思想: 在狀態空間中迭代計算最優的 cost-to-come 代價值。
下圖爲上例,根據正向值迭代獲得的最優 cost-to-come 代價值表。
\(L\left ( \pi _{K} \right ) = \sum_{k=1}^{K}l(x_{k},u_{k}) + l_{F}(x_{F})\)
經過引入代價項Lf(xf)這一技巧,將離散可行規劃中的約束轉換爲優化問題代價函數中的一項。
對比最優定長規劃問題和最優不定步長規劃的區別,主要在於終止條件的設置。
定長問題:
不定步長:容許不一樣長度的計劃
在最優不定步長問題中,從\(x_{I}\)到\(X_{G}\)的兩步計劃\(\left ( u_{1}, u_{2}\right )\)等效於從\(x_{I}\)到\(X_{G}\)的五步計劃\(\left ( u_{1}, u_{2},u_{T},u_{T},u_{T}\right )\),所以最優定長規劃中的正(反)向值迭代優化方法均可以擴展用於最優不定步長問題中。
當狀態空間巨大時,對於計算機去解決這樣的規劃問題會比較困難,基於邏輯的表示形式在定義離散規劃問題時比較流行,由於輸出的結果是邏輯可解釋的,可是因爲基於邏輯的表示形式難以泛化,所以在連續空間、感知不肯定、多決策的規劃問題中,狀態空間的表示形式仍然適用。
舉例: 放電池到手電筒內