動態規劃學習(一)算法思想簡介

1.分治法

將問題劃分爲互不相交的子問題,遞歸的求解子問題,再將它們的解組合起來,求出原問題的解。但是這樣會 做許多不必要的工作,它會重複地求解那些公共的子問題。

2.動態規劃

與分治法類似,都是組合子問題的解來求解,主要應用於子問題重疊的問題,不同的子問題具有公共的子子問題,對每個子子問題只求解一次,將解保存起來,從而無需每次求解一個子子問題都重新計算。通常用來求解最優化問題。

設計動態規劃步驟

1.刻畫一個最優解的結構特徵
2.遞歸地定義最優解的值
3.計算最優解的值,通常採用自底向上的方法。
4.利用計算出的信息構造一個最優解。

動態規劃思想

動態規劃方法仔細安排求解問題,對每個子問題只求解一次,並將結果保存下來,如果隨後再次需要此子問題的解,只需查找保存的結果,不必重新計算。動態規劃是付出額外的內存空間來節省計算時間,是典型的時空權衡。

常用的實現方法

自底向上法,這種方法一般需要恰當定義子問題規模的概念,使得任何子問題的求解都只依賴於更小的子問題的求解,因而我們可以將子問題按規模排序,按由小到大的順序進行求解。當求解某個子問題的時候,它所依賴的那些更小的子問題都已求解完畢,結果已經保存。每個子問題只需求解一次,當我們求解它時,它的所有前提子問題都已求解完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章