動態規劃(dynamic programming)與分治法相似,都是通過組合子問題的解來求解原問題。
動態規劃方法通常來求解最優化問題。
設計動態規劃演算法的4個步驟:
刻畫乙個最優解的結構特徵
遞迴地定義最優解的值
採用自底向上的方法計算最優解的值
利用計算出的資訊構造乙個最優解
適合應用動態規劃方法求解的最優化問題應具備的兩個要素:最優子結構和子問題重疊。
如果乙個問題的最優解包含其子問題的最優解,則稱此問題具有最優子結構性質。
在發掘最優子結構的性質的過程實際遵循如下通用模式:
證明問題最優解的第乙個組成部分是是做出乙個選擇。做出這次選擇會產生乙個或多個待解的子問題。
對於乙個給定問題,在其可能的第一步選擇中,你假定已經知道了那種選擇才會得到最優解。
給定可獲得的最優解後,你確定這次選擇會產生哪些子問題,以及如何最好的刻畫子問空間。
利用「剪下—貼上」(cut-and-paste)技術證明:作為構成原問題最優解的組成部分,每個子問題的解就會說它本身的最優解。
在動態規劃方法中,我們通常自底向上地使用最優子結構,即首先求得子問題的最優解,然後求原問題的最優解。
即問題的遞迴演算法會反覆地求解相同的子問題,而不是一直生成新的問題。
動態規劃演算法的設計要點(筆記)
例項 1最長公共子串行問題 2.揹包問題 我想說的事任何知識都可以有一些套路,也就是方 動態規劃演算法的設計也不例外。當然對待感情我的一貫觀點是少一些套路,多一些真誠。少廢話,看要點!1.引入引數來界定問題的邊界,注意子問題的重疊程度。2.給出帶邊界引數的優化定義與優化函式的遞推關係,找到遞推關係的...
動態規劃 什麼是動態規劃?
先來看看 資訊學奧賽一本通第5版 是怎麼說的 動態規劃程式設計是對解最優化問題的一種途徑 一種方法,而不是一種特殊演算法。不像前面所述的那些搜尋或數值計算那樣,具有乙個標準的數學表示式和明確清晰的解題方法。動態規劃程式設計往往是針對一種最優化問題,由於各種問題的性質不同,確定最優解的條件也互不相同,...
mysql動態規劃 動態規劃
動態規劃 能夠動態規劃的問題具有以下特點 可分解成規模更小的子問題 子問題的結果可復用 關鍵是要理解狀態轉移方程的含義就好啦!數字三角形 問題描述 在數字三角形尋找從頂到底的路徑,使得路徑經過的數字之和最大。規定每一步只能往左下或右下走,求出最大路徑和。遞迴解法 include include us...