1. 程式人生 > >從遞迴到動規(學習筆記)

從遞迴到動規(學習筆記)

區別:動態規劃是由已知推為止,由子問題推大問題,由邊界值逆推,相當於遞迴的逆過程。

解題思想:

1.分解子問題:將原問題分為若干子問題,子問題形式與原問題相似,規模減小,子問題的解求出來即儲存,不影響其他子問題,避免重複求解。

2.確定狀態

狀態就是與解相關的一組變數,例如數字三角形求到底邊最大值時,每個值的行號列號就組成了一個狀態。一般K個整形數構成一個狀態,一般K維陣列存放狀態值。問題的時間複雜度一般是狀態數乘以計算每個狀態所需時間。

3.確定邊界狀態值(初始狀態值)

數字三角形中的底邊數值

4.確定狀態轉移方程(遞推方程)

用已知狀態,求未知狀態

可解題的條件:

1.具有最優子結構:問題的最優解所包含的子問題的解也是最優的。

2.無後效性:只與當前的狀態值有關,與狀態值如何來的無關。