動態規劃一般提問的形式是:最優解是多少,是否可以,有多少種具體的方案。不涉及具體解。
所以如果乙個題目問:請你列出解決這個問題的所有解,很多時候是用回溯演算法,回溯演算法是一種基於深度優先遍歷的方法,思想依然是遍歷得到所有的解。回溯演算法的複雜度很高。
動態規劃和回溯演算法的相同點是:解決乙個問題有多個步驟,每乙個步驟有多種選擇。
問最優解是多少,用動態規劃,也可以用回溯演算法,但是複雜度很高,很多時候會超時。問全部具體解,用回溯演算法。
用動態規劃解決的問題一般需要滿足最優子結構、重複子問題、無後效性。最優子結構和無後效性在當前這個問題中沒有體現。
回溯演算法和DFS聯絡
回溯法是一種選優搜尋法 試探法 被稱為通用的解題方法,這種方法適用於解一些組合數相當大的問題。通過剪枝 約束 限界 可以大幅減少解決問題的計算量 搜尋量 深度優先搜尋 depth first search,dfs 是一種用於遍歷或搜尋樹或圖的演算法。沿著樹的深度遍歷樹的節點,盡可能深的搜尋樹的分支。...
動態規劃和回溯總結
演算法的錄課可以以大知識點為一門課程,比如dp,比如回溯,比如線段樹,比如最短路等等1 找準狀態 一般問題所問我們就可以設定為狀態 2 找變化 移 關係 也就是找遞推表示式 也就是找動態規劃的狀態轉移方程 3 找好起始狀態和最終狀態 4 找好刷表的順序 也就是每層迴圈的實際意義1 空間換時間 2 刷...
應用動態規劃的演算法
1 許多字串操作演算法如最長公共子列 最長遞增子列 最長公共字串 2 將動態規劃用於圖的樹分解,可以有效解決有界樹寬圖的生成樹等許多與圖相關的演算法問題 3 決定是否及如何可以通過某一特定上下文無關文法產生給定字串的cocke younger kasami cyk 演算法 4 計算機西洋棋中轉換表和...