演算法 4 動態規劃

2021-09-13 11:52:34 字數 1149 閱讀 5181

最長公共子串行

0/1揹包問題

二叉搜尋樹

參考文獻

動態規劃(dynamic programming)是運籌學的乙個分支,是求解決策過程(decision process)最優化的數學方法。20世紀50年代初美國數學家r.e.bellman等人在研究多階段決策過程(multistep decision process)的優化問題時,提出了著名的最優化原理(principle of optimality),把多階段過程轉化為一系列單階段問題,利用各階段之間的關係,逐個求解,創立了解決這類過程優化問題的新方法——動態規劃。2023年出版了他的名著《dynamic programming》,這是該領域的第一本著作。

動態規劃(dynamic programming)與分治方法相似,都是通過組合子問題的解來求解原問題(在這裡,「programming」指的是一種**法,並非編寫電腦程式)。

分治方法將問題劃分為互不相交的子問題,遞迴地求解子問題,再將它們的解組合起來,求出原問題的解。與之相反,動態規劃應用於子問題重疊的情況,即不同的子問題具有公共的子子問題(子問題的求解是遞迴進行的,將其劃分為更小的子子問題)。在這種情況下,分治演算法會做許多不必要的工作,它會反覆地求解那些公共子子問題。而動態規劃對每個子子問題僅求解一次,並將其解儲存於**之中,從而無需每次求解相同子子問題時都要重新計算,避免了這種不必要的計算工作。

動態規劃方法通常用於求解最優化問題(optimization problem)。這類問題可以有很多可行解,每個解都有乙個值(我們稱之為代價),我們希望尋找具有最優值(通常為最大值或者最小值)的解。我們稱這樣的解為問題的乙個最優解(an optimal solution),而不是最優解(the optimal solution),因為有可能有多個解達到最優值。

重疊子問題

分析優化解的結構

遞迴地定義最優解的代價

遞迴地劃分子問題,直至不可分

自底向上地求解各個子問題

根據構造最優解的資訊構造優化解

反證法i = j : m[ i , j ] = 0

演算法 4 動態規劃揹包

容量 m kg 的揹包,另外有 i個物品,重量分別為 w 1 w 2 w i kg 價值分別為 p 1 p 2 p i 元 將哪些物品放入揹包可以使得揹包的總價值最大?最大價值是多少?我們要求得 i個物體放入容量為 m kg 的揹包的最大價值 記為 c i m 在選擇物品的時候,對於每種物品 i只有...

動態規劃 4

動態規劃 動態規劃所處理的問題是乙個多階段決策問題,一般由初始狀態開始,通過對中間階段決策的選擇,達到結束狀態。這些決策形成了乙個決策序列,同時確定了完成整個過程的一條活動路線 通常是求最優的活動路線 如圖所示。動態規劃的設計都有著一定的模式,一般要經歷以下幾個步驟。初始狀態 決策 決策 決策 結束...

演算法 動態規劃

動態規劃 把多階段過程轉化為一系列單階段問題,利用各階段之間的關係,逐個求解 演算法例子 1.鋼條切割 serling 公司購買長鋼條,將其切割為短鋼條,切割工序假設沒有成本支出,公司管理層希望確定最佳的切割方案。假設serling公司 一段長度為i英吋的鋼條的 為pi。鋼條的長度為整英吋,下表給出...