死磕動態規劃

2021-10-06 05:08:24 字數 1037 閱讀 3588

「乙個模型三個特徵」理論講解什麼樣的問題適合用動態規劃來解決呢?換句話說,動態規劃能解決的問題有什麼規律可循呢?

實際上,動態規劃作為乙個非常成熟的演算法思想,很多人對此已經做了非常全面的總結。我把這部分理論總結為「乙個模型三個特徵」。

首先,我們來看,什麼是「乙個模型」?它指的是動態規劃適合解決的問題的模型。我把這個模型定義為「多階段決策最優解模型」。下面我具體來給你講講。我們一般是用動態規劃來解決最優問題。而解決問題的過程,需要經歷多個決策階段。每個決策階段都對應著一組狀態。然後我們尋找一組決策序列,經過這組決策序列,能夠產生最終期望求解的最優值。現在,我們再來看,什麼是「三個特徵」?它們分別是最優子結構無後效性重複子問題。這三個概念比較抽象,我來逐一詳細解釋一下。

最優子結構最優子結構指的是,問題的最優解包含子問題的最優解。反過來說就是,我們可以通過子問題的最優解,推導出問題的最優解。如果我們把最優子結構,對應到我們前面定義的動態規劃問題模型上,那我們也可以理解為,後面階段的狀態可以通過前面階段的狀態推導出來。

無後效性無後效性有兩層含義,第一層含義是,在推導後面階段的狀態的時候,我們只關心前面階段的狀態值,不關心這個狀態是怎麼一步一步推導出來的。第二層含義是,某階段狀態一旦確定,就不受之後階段的決策影響。無後效性是乙個非常「寬鬆」的要求。只要滿足前面提到的動態規劃問題模型,其實基本上都會滿足無後效性。

重複子問題這個概念比較好理解。前面一節,我已經多次提過。如果用一句話概括一下,那就是,不同的決策序列,到達某個相同的階段時,可能會產生重複的狀態。

「乙個模型三個特徵」這部分是理論知識,比較抽象,你看了之後可能還是有點懵,有種似懂非懂的感覺,沒關係,這個很正常。後續我會通過乙個個例項具體分析這部分的內容。先去寫畢業**去了,溜啦溜啦~~~

分享乙個帶佬:

最低票價 死磕動態規劃系列

題目 在乙個火車旅行很受歡迎的國度,你提前一年計劃了一些火車旅行。在接下來的一年裡,你要旅行的日子將以乙個名為 days 的陣列給出。每一項是乙個從 1 到 365 的整數。火車票有三種不同的銷售方式 一張為期一天的通行證售價為 costs 0 美元 一張為期七天的通行證售價為 costs 1 美元...

leetcode 死磕動態規劃 入門2

每天堅持刷題!今天繼續死磕動態規劃,昨個發現簡單題目沒啥用,今天開始死磕難題 直接上題 leetcode 32 最長有效括號 題目描述 給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。題目分析 1.講真這個用棧做是挺簡單的,但是既然是死磕動態規劃而且在leetcode上也有動態規劃的...

死磕mysql 死磕mysql

資料庫建立語句 create database new 建立乙個名為new 的資料庫 drop database new 刪除名為new的資料庫 資料庫名為小寫,當初教我的那個人對我說在某個系統中大寫會出現異常情況,為了方便移植,統一為小寫 show creata database new 檢視建立...