動態演算法,最早的例子看的是最小樹,以為是貪心的變種。
後面又看了切鋼條,才有點初步理解。首先dp.的programming 的意思是**法。
動態演算法,其實更應該看成分治的變種。
1.首先問題必須可以縮小規模下去,所以就是可以劃出最優子問題。
2.和分治法不同的是,分治法中,n問題只依賴某個確定的比n小的問題, 而動態規劃中,n問題,可能依賴 1,2,3,...n-1 中的任意多個,
所以要求我們必須從最小規模求最優解開始,並記錄最優解,供更大規模使用。正因為從最小規模的最優開始,這樣導致看起來像貪心。呵呵。
先試著走最優的一步,但是並沒有把走的那步一定當作解的一環,而是暫時更新結果,再重新回到開頭。
動態法是一種,總領思想是分治,實施起來卻像貪心的演算法,必須具有最優子問題特性。
一般採用自底向上的**法,也可以採用 形式上自頂向下,本質自底向上的遞迴來處理。
常見演算法
最短路徑,最小樹
切鋼條
01揹包
找零
演算法之動態規劃
一 思想 首先要了解 動態規劃 必須先知道什麼叫做 多階段決策 百科裡面對這個問題解釋的很全,我就load一段出來,大家得要好好品味,好好分析。上面圖中最後一句話就定義了動態規劃是要幹什麼的問題。二 使用規則 現在我們知道動態規劃要解決啥問題了,那麼什麼情況下我們該使用動態規劃呢?最優化原理 最優子...
演算法之動態規劃
鋼條切割問題 鋼條切割問題出現在 演算法導論 一書第204頁,作為動態規劃的例題出現,該題內容如下 serling公司購買長鋼條,將其切割為短鋼條 切割工序本身沒有成本支出。公司管理層希望知道最佳的切割方案。假定我們知道serling公司 一段長為i英吋的鋼條的 為pi i 1,2,單位為美元 鋼條...
演算法實驗之動態規劃
設有n種不同面值的硬幣,各硬幣的面值存於陣列t 1 n 中。現要用這些面值的硬幣來找錢,可以實用的各種面值的硬幣個數不限。當只用硬幣面值t 1 t 2 t i 時,可找出錢數j的最少硬幣個數記為c i,j 若只用這些硬幣面值,找不出錢數j時,記c i,j 輸入結果儲存在1.txt中,輸出結果儲存在2...