二 利用動態規劃的思想來解決馬爾可夫決策問題

2021-09-29 15:11:46 字數 1172 閱讀 5042

動態規劃(dynamic programming)是非常經典的求解最優解的演算法思想,它要求問題滿足最優子特性才可以使用。我們對馬爾可夫問題的定義是乙個五元組

假設上圖每個節點上都有乙個值,現在要求從頂點經過一條路徑到達最底層的某乙個節點,使得路徑上值之和最大。按照動態規劃的思想,我們很容易可以想到從底層開始,處於同一分支的兩個節點比較,取較大的那個節點,迴圈這個過程,知道到達頂點。沿途取到的節點,就是路徑上的點,此時,值之和最大。首先我們將所有的頂點的值,作為初始資料寫入,然後把求解過程分成兩個部分:

①選出當前節點的左右子樹中較大的子樹 

②更新當前節點的值,也即

重複①②,最後得到頂點的值就是整個路徑的值之和。這個問題對我們解決馬爾可夫決策問題有什麼啟示?當我們給定策略狀態值函式動作值函式的概念,而狀態值函式和動作值函式的計算恰好符合上述例子的形式,我們引入最優貝爾曼方程,

從上述動態規劃思想解決問題的例子當中,我們可以看到過程①相當於找到最大的動作值函式,我們把它叫做策略改善(policy improvement),過程②相當於更新值函式,我們把它叫做策略評估(policy evaluation),將兩者組合就形成了我們的策略迭代,在馬爾可夫決策問題,通過策略的一次又一次的迭代,我們最終可以找到乙個收斂的策略,就是最優的策略。

策略迭代的偽**:

algorithm policy iteration

input: 初始狀態值,折扣因子γ,回報值r,轉移概率矩陣p,初始策略π

do: repeat 0,1,2,...

calculate current v #policy evaluation

for every state s in path,let a which make the biggest value of q(s,a) as the next step action #greedy

until all action has no change

ouput:最後的路徑(path)

利用二分思想來尋求解

1.長城守衛 beijing guards,cerc 2004,la3177 n 個人圍成乙個圈,其中第 i i 個人想要有 riri 個不同的禮物。相鄰的兩個人可以聊天,炫耀自己的禮物。5 個人,每個人都要乙個禮物,則至少要 3 3 種禮物。如果把這 3 3 種禮物編號為 1,2 31,2,3 則...

利用動態規劃的思想求最優解

源自 劍指offer 中的剪繩子問題,書中使用的是c 但是我更喜歡用python實現。這裡按照從上而下的順序計算,也就是說我們先得到f 2 f 3 再得到f 4 f 5 直到得到f n for i in range 4,length 1 max length 0 temp i 2 1 for j i...

動態規劃的思想

動態規劃 dynamic programming 演算法是解決多階段決策過程最優化問題的一種常用方法,難度比較大,技巧性也很強。利用動態規劃演算法,可以優雅而高效地解決很多貪婪演算法或分治演算法不能解決的問題。動態規劃演算法的基本思想是 將待求解的問題分解成若干個相互聯絡的子問題,先求解子問題,然後...