我知道dp是解決多階段決策問題,但是到底該如何理解dp,怎麼去用dp的思想解題?

時間 2021-06-12 21:28:02

1樓:xukuan

dp三要素:

1.重複子問題

2.最優子結構

3.無後效性(樹形dp不用考慮)

其他注意的:

1.邊界

2.迴圈的順序(以區間dp為多)

2樓:唐宋元明清

dp(dynamic programming)可以解決多階段決策問題,他可以在問題的某個階段可以做出乙個對結果最優的決策;

從個人角度來說,dp之所以能成立的基礎是,當前階段的決策可以通過已知的階段來求出。

專業術語應該叫該問題具有重疊子問題的性質。

而且當前階段的決策可以通過已知的階段來求出,也就是當前階段是通過已知階段轉移過來的。

從另乙個角度來說已知階段決策不能決定到現階段的決策,現階段的決策也只是根據已有的階段的決策來決定。(也就是說已有階段的決策只是為現階段的決策提供資訊)。這個也叫無後效性

典型的dp問題一般可以通過定義狀態來使問題被劃分為多個明顯的階段。這其實也是求解dp問題的關鍵,因為如何定義狀態決定了你如何劃分階段,也就決定了階段之間如何決策(也就是階段直接如何轉移);

dp問題的狀態應該符合以下兩點要求:1.重疊子問題,2.無後效性。

所以乙個典型的dp問題的解題框架應該是這樣的:

1.定義狀態(用來劃分階段)

2.描述不同階段(狀態)如何轉移(這一步一般都能推出乙個狀態轉移方程)

3.按乙個方向求解(從已知階段到未知階段)

我在csdn上寫了乙個關於動態規劃的專題,裡面詳細的講解動態規劃的解題框架,並用很多例子(比如揹包問題)來理解這個框架,感興趣的可以看一下

動態規劃專欄

我想知道解決辦法?

鹽叔 瀉藥,時間未到,你是改變不了心態的,再等會會吧,直到你願意為了改變心態付出那些你認為寶貴的東西的時候,就自然能找到方法了 二先生是摩羯 注意心態別變壞,別做壞事就好。上班狗的我,不喜歡心機和壞脾氣的人,以前還會去懟一下,現在人不犯我我不犯人。我盡量懶得理這些,壞我心情和工作狀態。所以守住本心,...

我討厭全班同學,我想知道怎麼解決

先匿吧,以下可能會挺消極,仁者見仁吧。我曾經總是感覺這個世界充滿惡意。我恨著這一切,我甚至想快點結束自己這荒唐的生活。有一次,站在窗邊了,我想到了我的家人,我不能這般自私任性,未來還是有很多可能性的,對吧。所以,我選擇另外一種離開的方法,聽說過嗎?做好事的好人一般走的挺早的,我奶奶和外婆都是。因此,...

我是高中生,和朋友之間的事情不知道怎麼解決,我媽一直用激將法,但是她越這麼樣我就越不想聽她的怎麼辦?

李霞 高中啊,要羨慕 因為我沒考上 首先有個機會上高中你的把握好。現在現實社會,沒個學歷是真難找好工作。先問問自己這樣的同桌 朋友 值得你和家人這樣嗎?上高中了,學習開小差就會被刷下去,上不了好大學,接連你找工作都有影響,這要好好思量,上高中也進入到了青春叛逆期了,有時家人是為了自己好,但就不想跟家...