《演算法導論》筆記 動態規劃概覽

2021-08-29 19:48:43 字數 448 閱讀 3914

什麼問題適合使用動態規劃來解決?

如果乙個問題具有以下兩個特徵,那麼就可能適合用動態規劃來解決:

如果乙個問題的最優解包含著該問題的子問題的最優解,那麼這個問題就具有最優子結構。擁有最優子結構特徵的問題,就有可能用動態規劃來解決(當然,也有可能用貪婪演算法)。

在遞迴式中,乙個問題的子問題,以及子子問題的解決,很可能會用到很多重複的子問題的解,如果每一次都重新計算,那麼重複的計算量非常大的,在動態規劃中,會將子問題的解記錄下來,這樣,再次遇到該子問題時,就可以直接用已經儲存的解。 

綜上,用動態規劃來解決問題,主要按以下步驟來進行:

所以,動態規劃,可以說是一種從頂向底來了解最優化問題的最優解結構,然後再從底向上來解決問題的方法

動態規劃解問題的難點就在於找最優解的遞迴結構。 

後面我將做一些用動態規劃解決問題的練習,並把相應的筆記帖上來。

演算法導論 動態規劃

動態規劃這個演算法,我一直都搞不明白,也許因為我數學能力太差的緣故,總是不得其要領,每次學習這個演算法的時候,總是不知道所謂的狀態轉移方程到底是怎麼樣推導出來的。其實就在我寫這篇部落格的時候,我依然不清楚。什麼問題能用動態規劃來解決呢?動態規劃問題的特徵就是最優子結構,乙個遞迴結構 該問題需要求乙個...

演算法導論 讀書筆記 動態規劃

一.動態規劃介紹 動態規劃與分治法整體思路相近 組合子問題的解求解原問題。將問題劃分為互不相交的子問題,遞迴地求解子問題,再將它們的解組合起來,求出原問題的解。動態規劃的應用場景 子問題重疊。子問題的解決需要解決子子問題 遞迴 而不同子問題之間的子子問題是相同的。動態規劃的實現及特點 對於分治演算法...

演算法導論 2 動態規劃

動態規劃與分治方法類似,都是通過組合子問題的解來求解原問題 需要注意的是,動態規劃 dynamic programming 這裡的programming並不是指編寫電腦程式,而是指一種 法 分治方法將問題劃分為互不相交的子問題,遞迴地求解子問題,再將它們的解組合起來,求出原問題的解 動態規劃也是通過...