動態規劃原理

2021-09-09 06:53:19 字數 1210 閱讀 5782

運用動態規劃求解最優化問題第一步

若乙個問題的最優解中包含其子問題的最優解,則此問題具有最優解的結構性質。因為使用子問題的最優解構造原問題最優解,所以我們必須確保考察了最優解中用到的所有子問題

如何發掘最優子結構性質

證明問題最優解的第乙個組成部分是做出乙個選擇。例如切割鋼條的第一次切割位置。做出該選擇後,將會產生乙個或者多個待解的子問題。

對於乙個給定的問題,在其可能的第一步選擇中,假定已經知道哪種徐哲才會得到最優解。此時我們並不關心具體選擇時如何得到的,只是假定已經知道了該選擇

給定了可獲得最優解的選擇後,我們要確定這次選擇將會產生哪些子問題,以及如何最好地刻畫子問題空間。

利用「剪下-貼上」技術證明(假設法)子問題的最優解就是原問題最優解的一部分。

刻畫子問題空間的好經驗就是盡量保持子問題空間盡可能簡單,必要時才擴充套件它,並且我們要保持每個子問題的性質是一樣的重點也是難點)。

對於不同問題領域,最優子結構的不同體現在兩個方面:

原問題的最優解中設計多少個子問題(子問題總數n),以及

在確定最優解使用哪些子問題時,我們需要考察多少種選擇(每個子問題需要考察多少種選擇m)。

我們可以用n∗m

n*mn∗

m粗略分析動態規劃演算法的執行時間。

同樣,子問題圖也可以用來做同樣的分析—結點代表子問題數,每個結點的出度代表每個子問題所對應的選擇數。

子問題必須是無關的

同乙個原問題的子問題的解不影響另乙個子問題的解(求解乙個子問題時,用到了某些資源,則其他子問題在求解時則不可用該資源,若不用該資源問題可以得到解決,則稱子問題無關,否則稱為子問題相關)。

子問題空間必須足夠「小」,在遞迴過程中的特徵就是會反覆求解相同的子問題,而不是一直生成新的子問題。如果採用遞迴形式,若要解決重複計算相同子問題的問題,則可以採用「備份」的方式,對每個子問題之求解一次,下次遇到相同的子問題時,只要返回之前解決過的相同子問題的結果即可。這樣可以大大減少執行時間。

若要重構最優解,則我們可以將每個子問題所做出的的選擇存在乙個表中,這樣就不必根據代價值來重新計算來重構這些資訊,從而減少執行時間。這個表的規模要與子問題規模一致。具體輸出最優解的方案,需要結合子結構性質,大部分情況下需要採取遞迴形式來輸出最優解方案

動態規劃原理

子問題與原問題具有完全相同的結構 是否可以用結束狀態確定 狀態?不一定具有無後效性?在每個子問題的求解中都利用了它前面的子問題的最優化結果,依次進行,最後乙個子問題所得到的最 優解就是整個問題的最優解 最優化原理 區域性最優解導致全域性最優解 無後效性 dp 首先,請注意無後效性一般是針對問題的分析...

動態規劃原理

動態規劃方法通常用來求解最優化問題 最優子結構 如果乙個問題的最優解包含其子問題的最優解,那麼就稱此問題具有最優子結構性質。某個問題是否適用動態規劃方法,觀察其是否具有最優子結構性質是乙個好的線索 具有最優子結構性質也可能意味著適用貪心策略 實際上,發掘最優子結構性質遵循如下的通用模式 不同問題的最...

動態規劃原理

適合應用動態規劃方法求解的最優化問題應該具備的兩個要素 1 最優子結構 最優子結構性質 如果乙個問題的最優解包含其子問題的最優解,就稱該問題具有最優子結構性質。使用動態規劃方法時,我們用子問題的最優解來構造原問題的最優解。因此,我們必須小心確保考察了最優解中用到的所有子問題。在發掘最優子結構性質的過...