動態規劃與記憶化搜索

動態規劃

動態規劃:先將問題分解爲子問題,並且對於這些分解的子問題自身是最優的才能在這個基礎上得出我們要解決的問題的最優方案.
與貪心算法不同之處在於,貪心算法是從局部最優來解決問題,而動態規劃則是從全局最優來解決問題,當對情況及條件加以限制時,貪心算法會因目光短淺而得到錯誤答案。

記憶化搜索

記憶化搜索=搜索的形式+動態規劃的思想
搜索過程中會有很多重複計算,通過記錄一些狀態的答案減少重複搜索量.
搜索過程中一個搜索結果必須可以建立在同類型問題的結果上

聯繫

記憶化搜索與遞歸一樣,都是自頂向下的思路,而動態規劃則是自底向上的思路。
在平常練習中,我們一般是隻考慮一個問題,一般習慣於自頂向下正向思考,這也比較符合人類的邏輯習慣嘛,這便是記憶化搜索(ms)。如果逆向思考,自底向上遞推求解,這便是動態規劃(dp)了。
我是比較習慣於記憶化搜索的,因爲記憶化搜索對於邊界條件的處理比較簡單,思考過程也更爲簡便,但缺點是時間會比起dp來講慢很多,實在不行就轉換成非遞歸形式,只要稍微改變一下細節就行了。

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