動態(tài)規(guī)劃

與貪心算法求局部最優(yōu)解相比哥桥,動態(tài)規(guī)劃求的是全局最優(yōu)解(但不是每個問題都有最優(yōu)解笋妥,比如NP完全問題就沒有最優(yōu)解)

例:背包問題之動態(tài)規(guī)劃解決
問題描述:
現(xiàn)在有一個背包可以裝4磅物品柳洋,現(xiàn)在要從商城里拿盡可能價值高的物品裝進包里锁蠕。
商城物品情況如下

商品名 吉他 筆記本 音箱
價值 1500 2000 3000
重量 1 3 4

每個動態(tài)規(guī)劃都從一個網(wǎng)格(如下)開始
現(xiàn)在一行一行地填充該網(wǎng)格。

物品\物品重量 1 2 3 4
吉他
音箱
筆記本

每個格子的計算公式:


image.png

填充吉他行 目前最大價值1500(吉他)

物品\物品重量 1 2 3 4
吉他 1500 1500 1500 1500
音箱
筆記本

填充音箱:目前最大價值3000(音箱)

物品\物品重量 1 2 3 4
吉他 1500 1500 1500 1500
音箱 1500 1500 1500 3000
筆記本

填充筆記本:目前最大價值3500(吉他+筆記本)

物品\物品重量 1 2 3 4
吉他 1500 1500 1500 1500
音箱 1500 1500 1500 3000
筆記本 1500 1500 2000 3500

動態(tài)規(guī)劃的原則就是將大問題拆解成多個小問題征堪,先把小問題的最優(yōu)解求出,再在考慮小問題最優(yōu)解的前提下背桐,得出最終問題的最優(yōu)解
本例的背包問題中优烧,先求出只有吉他一種物品時的最優(yōu)解,再逐步添加物品链峭,最終求出最優(yōu)解


image.png

關于網(wǎng)格計算公式的補充:
整個動態(tài)規(guī)劃求解過程中畦娄,是從小問題層逐步求解到大問題,自然每個格子要考慮的第一點就是前一格子的最大值弊仪,又熙卡,新的一層添加了新物品,所有也要考慮新物品的價值+剩余可用磅數(shù)的最大價值(上一層求得)

背包問題補充:
若再添加一個物品——項鏈{‘價值’:1000$励饵,‘重量’:0.5磅}
此時如果沿用之前的網(wǎng)格

image.png

則會出現(xiàn)考慮不周的情況(0.5磅重量無法考察)
因此驳癌,當新加入的物品重量小于當前物品重量最小劃分時,需要重新劃分網(wǎng)格役听。
劃分規(guī)則:最大重量//最小重量 即為區(qū)間數(shù)颓鲜。
加入0.5磅的項鏈之后,新的網(wǎng)格為:

物品\物品重量 0.5 1 1.5 2 2.5 3 3.5 4
吉他
音箱
筆記本
項鏈

如果要裝的物品為燕麥典予,木豆甜滨,大米這種可以一部分一部分取出的物品
動態(tài)規(guī)劃則解決不了這種情形,貪心可以瘤袖。

旅游行程問題

景點名(倫敦) 威斯敏特 雙球劇場 英國美術館
價值 7 6 9
花費時間 0.5 0.5 1

當然我們可以用動態(tài)規(guī)劃的網(wǎng)格法來得到一條最有價值的旅游路線

如果加入以下景點

景點名(巴黎) 埃菲爾鐵塔 盧浮宮 巴黎圣母院
價值 8 9 7
花費時間 1.5 1.5 1.5

在去巴黎的景點所花費的時間中衣摩,有0.5天是從倫敦前往巴黎的時間。
因此如果先去了埃菲爾鐵塔,則去巴黎的剩下兩個景點的花費時間也要減少2個小時

這種情況就不能使用之前的動態(tài)規(guī)劃算法孽椰。

動態(tài)算法處理的每個子問題都是離散的

再來看一個案例
假如你要經(jīng)營一個網(wǎng)站昭娩,網(wǎng)站主要任務是:英文單詞翻譯。即用戶輸入英文單詞黍匾,你給出相應的翻譯。 例用戶輸入fish呛梆,網(wǎng)站輸出魚
如果用戶輸入的hish锐涯,但詞典中并沒有該單詞,此時應給出相似詞填物。
怎么樣才算是相似詞呢纹腌?判斷最大子串長度?
利用動態(tài)規(guī)劃求出兩字符串(fish和hish)的最大字串長度
動態(tài)規(guī)劃解決問題總是要先知道網(wǎng)格中的各個元素:
兩個坐標軸是什么滞磺?網(wǎng)格中的值是什么(通常為要優(yōu)化的指標
1升薯,分解問題:要求fish和hish的最大子串,可以先求其字串的最大公共子串(如先求fis和his)击困∠雅考慮兩個坐標軸為兩個單詞广凸,則網(wǎng)格中的值為最大子串的長度。

f i s h
h
i
s
h

接下來填充該網(wǎng)格蛛枚。不斷驗證得到單元格公式:


image.png

單元格公式解釋:
1)兩字母相同谅海,則局部最大字串要延長,即斜上方(cell[i][j])的值加一(這里指標值在斜方向上累加)
2)若是不同蹦浦,則局部最大字串為0

* h i s h
f 0 0 0 0
i 0 1 0 0
s 0 0 2 0
h 0 0 0 3

兩字符串的最大字串長度即為網(wǎng)格中的最大值3扭吁。

如果用戶輸入fosh,那么要返回fish還是fort呢盲镶?
如果判斷依據(jù)為最大子串侥袜,則會返回fort,但實際上fish和fosh更像溉贿!
因此我們考慮判斷依據(jù)為兩字符串的最大公共子序列長度(即兩字符串公共字符的個數(shù))
求最大公共子序列的單元格公式為:

image.png

* f o s h
f 1 0 0 0
o 1 2 2 2
r 1 2 2 2
t 1 2 2 2

fosh和fort的最大公共子序列長度為2

* f o s h
f 1 0 0 0
i 1 1 1 1
s 1 1 2 2
h 1 1 2 3

fosh和fish的最大公共子序列長度為3
此時就可以返回正確結果fish而非fort系馆。

小結

1,動態(tài)規(guī)劃通常用于解決在給定約束條件下優(yōu)化某個指標值
2顽照,動態(tài)規(guī)劃的原則就是:將大問題分解成小問題由蘑,在解決了小問題的條件下,逐步求解大問題代兵。(一個分解問題的方法就是尼酿,將條件逐漸減少,從最簡單的情況開始分析)
3植影,動態(tài)規(guī)劃使用的一個必要條件為:分解出來的每個小問題都是離散的
4裳擎,每種動態(tài)規(guī)劃方案都設計網(wǎng)格
4.1,網(wǎng)格的每個格子都是一個小問題
4.2思币,網(wǎng)格的每個格子的值都是指標的值
4.3鹿响,單元格計算公式需要具體問題具體分析

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末谷饿,一起剝皮案震驚了整個濱河市惶我,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌博投,老刑警劉巖绸贡,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異毅哗,居然都是意外死亡听怕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門虑绵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尿瞭,“玉大人,你說我怎么就攤上這事翅睛∩椋” “怎么了黑竞?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長酥艳。 經(jīng)常有香客問我摊溶,道長,這世上最難降的妖魔是什么充石? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任莫换,我火速辦了婚禮,結果婚禮上骤铃,老公的妹妹穿的比我還像新娘拉岁。我一直安慰自己,他們只是感情好惰爬,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布喊暖。 她就那樣靜靜地躺著,像睡著了一般撕瞧。 火紅的嫁衣襯著肌膚如雪陵叽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天丛版,我揣著相機與錄音巩掺,去河邊找鬼。 笑死页畦,一個胖子當著我的面吹牛胖替,可吹牛的內容都是我干的。 我是一名探鬼主播豫缨,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼独令,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了好芭?” 一聲冷哼從身側響起燃箭,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎栓撞,沒想到半個月后遍膜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡瓤湘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了恩尾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弛说。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖翰意,靈堂內的尸體忽然破棺而出木人,到底是詐尸還是另有隱情信柿,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布醒第,位于F島的核電站渔嚷,受9級特大地震影響,放射性物質發(fā)生泄漏稠曼。R本人自食惡果不足惜形病,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望霞幅。 院中可真熱鬧漠吻,春花似錦、人聲如沸司恳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扔傅。三九已至耍共,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間猎塞,已是汗流浹背试读。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留邢享,地道東北人鹏往。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像骇塘,于是被迫代替她去往敵國和親伊履。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內容