1 解決問題——分治
用有限的計算能力處理大規模問題的基本手段
1.1 遞迴
問題的解決方法包含遞迴部分和非遞迴部分,非遞迴部分解決問題的一部分,減少問題規模,而遞迴部分將形式不變,但減小了規模的問題傳遞到下一輪解決中去。這樣,每一輪處理,問題都有一部分(規模)得到解決,一直遞迴下去(直到終止條件),直到整個問題得到解決
1.2 迭代
2 空間換時間——快取子問題答案
在解決問題的過程中,由於每一輪解決是封閉的(看不到其他輪的解決),所以不同輪的解決中可能是在處理相同的子問題(在非線性分治中尤為常見)。所以,犧牲一塊空間用於快取子問題答案,每次解決子問題前先查詢,如果答案存在,則直接引用,若不存在,才進行計算,並將答案寫入
動態規劃 思想
動態規劃 把問題劃分成子問題遞迴求解,並且保留中間結果以避免重複計算子問題的方法,叫動態規劃。eg 三角形路徑數字之和 關鍵思想 1,劃分成若干子問題 2,子問題的狀態,及若干狀態值 狀態的表述。3,子狀態之間的轉換 即遞迴求解,子狀態到上一級子狀態之間的變換關係 即如何從乙個或多個值已知的狀態,求...
動態規劃的思想
動態規劃 dynamic programming 演算法是解決多階段決策過程最優化問題的一種常用方法,難度比較大,技巧性也很強。利用動態規劃演算法,可以優雅而高效地解決很多貪婪演算法或分治演算法不能解決的問題。動態規劃演算法的基本思想是 將待求解的問題分解成若干個相互聯絡的子問題,先求解子問題,然後...
動態規劃 詳解思想步驟
1 求解動態規劃問題的基本步驟和思想 動態規劃的式子都是狀態p由狀態q1 q2 q3 之中選擇乙個或幾個計算出來的形式,但是如果一直是一些狀態這樣遞迴下去,最後會無限迴圈的,所以每個式子一直寫下去最後都會得到一些狀態p是常數 遞迴邊界 的形式。以上可構造乙個dag 自底向上就是已經知道了所有遞迴邊界...