1. 程式人生 > >線性動態規劃

線性動態規劃

注:部落格的不少思想是從演算法競賽進階指南上選取的。

線性動態規劃是指具有“階段”劃分的動態規劃演算法。動態規劃演算法的狀態包括多個維度,但在每個維度上都具有“線性”變化的階段,那麼也可以叫作線性動態規劃。

首先還是說幾個固有的模型。

lis問題:演算法競賽進階指南給出的表示是這樣。  狀態表示:f[i]表示以a[i]結尾的“最長上升子序列”的長度        階段劃分:子序列的結束位置。(每個子問題的求解順序都構成一個階段,在完成前一個階段的計算後,才會執行下一階段的計算,所以一般我們設定狀態可以這樣設定,我們先把階段確定好,然後就已經滿足了無後效型和最優子結構,然後在多增加一些維度來唯一確定這個狀態)

lcs問題:狀態表示:f[i,j]表示字首字串a[1..i]與b[1..j]的“最長公共子序列”的長度,   階段劃分:已經處理的字首的長度。