動態規劃能得到一類問題的最優解,比如揹包問題用動態規劃來解決,如何證明這個解就是相對應問題的最優解呢?

時間 2021-06-02 04:37:56

1樓:Tanki Zhang

先回顧下動態規劃問題的求解過程:

(1)證明該問題具有最優子結構性質(區域性最優解能決定全域性最優解);

(2)根據最優子結構,求遞推方程;

(3)根據遞推方程,說明該問題具有重疊子結構性質;

(4)自底向上寫出求解最優值的非遞迴演算法,同時構造最優解的解空間樹;

(5)遍歷解空間樹,求得最優解。

貪心演算法是求乙個子問題的解,假設這個解是子問題的最優解,在此基礎上再進一步推導更大問題的最優解。

這意味著,「貪心演算法最後求出解是最優的」是基於「子問題的解的確是最優的」並且「全域性最優 該區域性最優解」。如果這一點不成立,那貪心最後的結果也並不可靠。

再回過頭來看動態規劃,由於在求解時,第一步就要求要證明最優子結構,所以保證了「全域性最優 該區域性最優解」。

綜上,回答題主問題,是通過證明最優子結構來證明的。感覺題主有這個問題是因為很多時候大家都是說感覺這個可以dp解,然後就dp了,如果不是有必要,大家不會很嚴肅的推導,或者在推導遞推方程的時候,很自然就承認了的確存在最優子結構這件事。

最後,隨便找了個揹包問題的最優子結構證明。

2樓:冒泡

如何理解動態規劃?

基本上你可以理解為,在暴力搜尋的基礎上減掉了一些重複計算,從而加快速度,正確性和暴力搜尋的結果是一樣的,而後者由於列舉了所有可能情況,所以必然是得到最優結果的

3樓:

比方說整數值的揹包問題,表示狀態的物品index-總容量對上有乙個典範的良序(就是你列舉狀態的順序了)。假設這個演算法在某個input下不對,取出最小的狀態座標,使得求解出的這個子問題答案錯誤。根據假設它的前繼子問題都是求解正確的,帶入bellman方程,它也應該被算對,矛盾。

稍微一般一點的情況就是在狀態的DAG上做歸納但是題主想問的應該不是這個問題,而是「怎麼確認一種子問題劃分和相應的狀態轉移方程是正確的」,這個問題就太meta了可能不太好回答。。

在你設計出乙個dp演算法之前往往會考慮一些樸素的暴力方法,列舉原問題「完整的action序列」,優化目標是這個action序列上的可能比較複雜的某個函式。這個objective往往寫成有限步的計算,所有的中間結果都是有序域\mathbb上的元素。有的時候你會發現action序列的某些部分在計算的某一部開始不再被用到了,被用到的只是這些action在之前參與的某(幾)個中間計算結果。

由於\mathbb上常見的操作在每個位置上都有良好的單調性,很可能能找到一組中間結果,使得我們能夠列舉這種中間結果來完成原問題的優化

動態規劃的最優子結構問題,有什麼樣的問題它不滿足最優子結構?

最典型的就是求最長路了。給定乙個帶權無向圖,起點,終點,要求每個節點只能訪問一次,求從起點到終點的最長路。參考求最短路的過程,把求最短路的過程套在求最長路上,按照求最短路的方式構建的子結構來推最長路,會遇到什麼問題?可能會出現節點被重複訪問的情況,這是不符合題意的。 鄧卓 如果乙個問題的最優解包含其...

「得到APP」的使用者都是一類什麼樣的人?

麥子 得到的使用者我覺得社會的各個階層的人都有在上面,比如我乙個上班族,也是會把除了上班之外的大部分時間都用在得到課程上面。我覺得除了工作之外,我可以獲得的知識和開闊視野的機會太少了。去線下的培訓班又不太現實,正好得到上的課程包羅永珍,從日常生活 職場關係 歷史 金融.都有,基本上就滿足了我的需求了...

世界上的問題真的只有一種最優解嗎?乙個事物可以有絕對的正誤嗎?

外向的孤獨患者 一道數學題可以有很多解題方法,我們先設定最簡潔的解法就是最優。那很多數學題都有多個最優的解法 兩個解法都只需要兩步,那就都是最優的。這是第乙個問題。 星辰明月你 我覺得不是。看了其他兩個人的回答,恕不能苟同。就好像解題,一道題有很多種演算法,老師列了4種,並告訴我們其中一種步驟簡單思...