1. 程式人生 > >LintCode 關於動態規劃問題的總結

LintCode 關於動態規劃問題的總結

1.動態規劃是解決多階段決策問題的一種方法。

2.多階段決策問題:如果一類問題的求解過程可以分為若干個互相聯絡的階段,在每一個階段都需作出決策,並影響到下一個階段的決策。

3.多階段決策問題,就是要在可以選擇的那些策略中間,選取一個最優策略,使在預定的標準下達到最好的效果。

4.最優性原理
(1)不論初始狀態和第一步決策是什麼,餘下的決策相對於前一次決策所產生的新狀態,構成一個最優決策序列。

(2)最優決策序列的子序列,一定是區域性最優決策子序列。

(3)包含有非區域性最優的決策子序列,一定不是最優決策序列。

5.動態規劃的指導思想
(1)在做每一步決策時,列出各種可能的區域性解.

(2)依據某種判定條件,捨棄那些肯定不能得到最優解的區域性解。

(3)以每一步都是最優的來保證全域性是最優的。

6.動態規劃的幾個概念

階段:據空間順序或時間順序對問題的求解劃分階段。
狀態:描述事物的性質,不同事物有不同的性質,因而用不同的狀態來刻畫。對問題的求解狀態的描述是分階段的。
決策:根據題意要求,對每個階段所做出的某種選擇性操作。
狀態轉移方程:用數學公式描述與階段相關的狀態間的演變規律。
7.大多數問題動態規劃都可以解決,但是太慢。因此有些問題貪心確實比動態快的多。不過相對的貪心解決問題並不如動態規劃精細,得出來的不一定是最優解,只能說是相對最優,根據情況選擇不同的演算法解決問題才是王道。