動態規劃詳解 第二章

2021-05-26 05:22:43 字數 2245 閱讀 8348

通過上一章的學習,相信大家對動態規劃已經有了乙個初步的了解,如果您將上一章的推薦習題全部掌握,那麼您可以開始這一章的學習內容了。

這一章,我們將講解一些動態規劃的設計技巧。

相信大家在做動態規劃一類題目的時候,往往不容易看出來這道題目是動態規劃。其實這並不是您的iq低,幾乎所有的初學者都會存在這樣的問題,我同樣也不例外,不過憑藉我超人的天賦,終於總結出來如何看出來某道題是不是動態規劃的終極方法:

做題做題在做題!在一年半的學習中,我深刻的體會到了:動態規劃是做出來的!這個硬道理,沒有題目數量的保證,學好動態規劃是很困難的。

但是動態規劃也並非是無章可循,下面就為大家介紹幾種常見的型別:

1.極值問題

這類問題的顯著特徵就是讓您求出最x值,並且往往具有最後子結構的性質,因為其模型變化豐富,並且和實際聯絡緊密,所以在動態規劃類問題中占有很大的重量

2.總數問題

3.一類博弈問題

4.某些雜題

一般情況下,動態規劃類的問題往往就這幾種型別,因此當大家看到以上幾種型別的時候,不妨向動態規劃的方向作些思考。

學習動態規劃的另乙個難點就是狀態的設計,可以說,只要有了狀態,那麼決策和階段也就迎刃而解了。

乙個好的狀態,首先要把問題描述清楚,其次轉移的時候應當盡量「簡單」,這裡的簡單,主要指狀態之間的「距離」,譬如a[i]=max(a[j]) j<=i就沒有a[i]=a[i-1]好。

下面讓我們看一道題目:

例:排隊買票

問題描述:一場演唱會即將舉行。現有n(o〈n〈=200〉個歌迷排隊買票,乙個人買一張,而售票處規定,乙個人每次最多只能買兩張票。假設第i位歌迷買一張票需要時間ti(1〈=i〈=n〉,隊伍中相鄰的兩位歌迷(第j個人和第j+1個人)可以由前乙個人買兩張票,也可由後一位買兩張票,則另一位就可以不用排隊了,則這兩位歌迷買兩張票的時間變為rj,現給出n,tj和rj,求使每個人都買到票的最短時間和方法。

因為可以從前乙個人買票,又可以從後乙個人買票,似乎不符合無後效性的原則,沒有辦法用動態規劃求解。

所以我們不妨採用加一維的策略:

設f(i,**)為到第i個人為止所需的最短時間.

設ti為第i個人單獨買票的時間。

設 ri為第i個人買2張票的時間。

則:狀態轉移方程分5種情況:

f(i,僅買1張)=min+ti

f(i,買2張代前一位)=min+ri

f(i,買2張代後一位)=min+ri

f(i,不買由前代)= f(i-1,買2張代後一位)

f(i,不買由後代)=min

注:本題的狀態還可以繼續優化到3種,請大家自己思考。

從上面的例子我們可以看到,當遇到題目的狀態無論如何也無法免除後效形時,可以採用加一維的方法來解決,有的時候甚至需要加兩維甚至三維。

處理動態規劃時還有幾種技巧:

1.對於一些需要計算出權函式的題目,不妨把函式的計算放置到動態規劃之外,同時還可以嘗試對一些權函式進行合併,這類處理權函式的技巧還有很多,相信大家在做題的過程中都會遇到,就不再詳細展開了

2.對於某些狀態,不妨對約束條件加以寬鬆,往往會起到出其不意的效果。

3.可以採用迴圈陣列技術,比較經典的應用就是上一章的數字三角形,因為只和上一層的狀態有關,和其他的狀態無關,所以不妨只儲存上一層的結果,每次計算出新的結果後就把上一層的結果捨棄,這樣會讓空間複雜度大大降低,是非常有用的一種優化方法。

4.採用狀態壓縮技術,這個優化的應用較為複雜,變形很多,有興趣的不妨在網上查詢相關資料

<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>

推薦題目:

1.數字三角形(採用迴圈陣列)

2.金明的預算方案(noip2023年提高組試題)

3.基因重組

4.數的劃分

5.免費餡餅

6.卡車更新

7.三維最大數字和

8.花店櫃檯布置

9.積木遊戲

10.musical themes(usaco 5.1.3)

11.buy low,buy lower(usaco 4.3.1)

12.rectangular barn (usaco 6.1.2)

本章內容看似簡單實則很難,僅僅是以上幾個題目是不夠的,而且幾乎所有的動態規劃試題都可以作為本章的練習,所以大家在做完上面的題目後不妨多找一些題目練習

《TCP IP詳解》筆記 第二章 鏈路層

第二章 鏈路層 1 鏈路層的作用 tcp ip的四層模型中,處於最下層的是鏈路層。它的主要作用是 接收和傳送ip模組的資料報 為apr模組傳送arp請求和接收apr應答 為rapr模組傳送rapr請求和接收rapr應答。2 乙太網協議和ieee 802.3協議。乙太網協議時先提出來的,採用csma ...

MySQL第二章總結 Mysql第二章 儲存引擎

1 本章目標 儲存引擎 資料型別 重點 2 儲存引擎 在關係型資料庫中,資料儲存在表中,表由行和列組成。開發中,可能需要各種不同的表,有的表簡單,有的表複雜,有的表讀取快,有的讀取資料慢,有的表更新快等。根據對資料的不同的處理需求,使用不同的儲存引擎,可以將mysql資料庫的效能發揮到最大。查詢my...

領悟(第二章)

當火車緩緩駛進車站的時候,夜幕已經降臨了。終於到了!望著窗外鐵道兩旁的燈火,我的內心不禁再一次的激動起來,一路上對今後在這個大都市的未來生活的想象已經讓我從昨天晚上上車一直興奮到現在了!平常這個時候應該正和朋友們一起在酒吧聊天吧,朋友們,你們現在還在談論我來這裡的目的麼?說實話,這個問題連我自己都說...