動(dòng)態(tài)規(guī)劃介紹

動(dòng)態(tài)規(guī)劃

動(dòng)態(tài)規(guī)劃介紹

??動(dòng)態(tài)規(guī)劃比較適合用來(lái)求解最優(yōu)問(wèn)題胧弛,比如求最大值、最小值等等; 與回溯算法相同的是都會(huì)分多級(jí)進(jìn)行計(jì)算, 不同的是會(huì)對(duì)每一級(jí)進(jìn)行合并統(tǒng)計(jì).

??非常典型的, 對(duì)于0-1背包問(wèn)題在指定重量下求取可以獲得的最大重量: 無(wú)論回溯算法還是動(dòng)態(tài)規(guī)劃都對(duì)每一個(gè)物品是否放入和不放入繼續(xù)判斷, 回溯算法往往繼續(xù)遞歸將此級(jí)獲得的信息傳給下一級(jí), 每個(gè)遞歸中這些信息都可能不同; 動(dòng)態(tài)規(guī)劃則對(duì)信息做一個(gè)記錄統(tǒng)計(jì)比如說(shuō)保存在數(shù)組中, 然后直接在這個(gè)數(shù)組上推算下一級(jí).

動(dòng)態(tài)規(guī)劃0-1背包問(wèn)題解法說(shuō)明

假設(shè): 每個(gè)物品的重量分別是 2,2,4,6,3, 物品個(gè)數(shù)為n=5, 允許重量w=9

  • 1 建立一個(gè)n*w(物品個(gè)數(shù)*重量)的數(shù)組, 那么對(duì)于第一級(jí)來(lái)說(shuō)我們可以得到: data[0][2]=data[0][0]=true兩種情況
  • 2 對(duì)于第二級(jí), 我們可以得到: data[1][0+0]=data[1][0+2]=data[1][2+0]=data[2+2]=true三種情況
  • 3 依次進(jìn)行, 我們就可以在一個(gè)數(shù)組中保存所有的可能情況了
  • 4 同時(shí)我們需要注意的是: data[n-1]的數(shù)據(jù)僅僅被data[n]用到此后均不需要, 我們甚至不需要n*w的空間
- 0 1 2 3 4 5 6 7 8 9
0 1 0 1 0 0 0 0 0 0 0
0 1 0 1 0 1 0 0 0 0 0

C++解法說(shuō)明

void knapsack2(int *item, int n, int w)
{
    bool *state = new bool[w+1];
    for(int i = 0; i < w; i++)
    {
        state[i] = false;
    }

    state[0] = true;
    if(item[0] <= w) state[item[0]] = true;

    for(int i = 1; i < n; i++)
    {
        for(int j = w - item[i]; j >= 0; j--)
        {
            if(state[j])    state[j+item[i]] = true;
        }
    }

    for(int i = w; i >= 0; i--)
    {
        if(state[i])
        {
            printf("weight: %d\n", i);
            break;
        }
    }
}

動(dòng)態(tài)規(guī)劃問(wèn)題的特征

LeetCode-120-三角形的最小路徑和, 舉例說(shuō)明!

  • 1 后續(xù)階段的狀態(tài)信息可以通過(guò)前一階段推算出來(lái)
  • 2 當(dāng)某一階段的狀態(tài)確定后, 就不必關(guān)系之前的狀態(tài); 也不會(huì)被后續(xù)狀態(tài)影響.
  • 3 狀態(tài)合并, 優(yōu)于回溯算法的重要優(yōu)點(diǎn)就是能夠去掉很多重復(fù)的子問(wèn)題(或者不必要判斷的子問(wèn)題)
  • 4 狀態(tài)轉(zhuǎn)移方程: 最重要的一點(diǎn)是我們需要找到一個(gè)方程能夠?qū)⑸弦患?jí)狀態(tài)轉(zhuǎn)變?yōu)橄乱患?jí), 可以見(jiàn)舉例中的: 解題思路.

強(qiáng)烈建議, 結(jié)合例子看動(dòng)態(tài)規(guī)劃的理論!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末楚殿,一起剝皮案震驚了整個(gè)濱河市撮慨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脆粥,老刑警劉巖砌溺,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異变隔,居然都是意外死亡规伐,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門匣缘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)猖闪,“玉大人鲜棠,你說(shuō)我怎么就攤上這事∠舫” “怎么了岔留?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)检柬。 經(jīng)常有香客問(wèn)我献联,道長(zhǎng),這世上最難降的妖魔是什么何址? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任里逆,我火速辦了婚禮,結(jié)果婚禮上用爪,老公的妹妹穿的比我還像新娘原押。我一直安慰自己,他們只是感情好偎血,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布诸衔。 她就那樣靜靜地躺著,像睡著了一般颇玷。 火紅的嫁衣襯著肌膚如雪笨农。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,158評(píng)論 1 308
  • 那天帖渠,我揣著相機(jī)與錄音谒亦,去河邊找鬼。 笑死空郊,一個(gè)胖子當(dāng)著我的面吹牛份招,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狞甚,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼锁摔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了哼审?” 一聲冷哼從身側(cè)響起鄙漏,我...
    開(kāi)封第一講書(shū)人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎棺蛛,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體巩步,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡旁赊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了椅野。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片终畅。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡籍胯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出离福,到底是詐尸還是另有隱情杖狼,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布妖爷,位于F島的核電站蝶涩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏絮识。R本人自食惡果不足惜绿聘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望次舌。 院中可真熱鬧熄攘,春花似錦、人聲如沸彼念。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)逐沙。三九已至哲思,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酱吝,已是汗流浹背也殖。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留务热,地道東北人忆嗜。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像崎岂,于是被迫代替她去往敵國(guó)和親捆毫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 回溯算法 回溯法:也稱為試探法冲甘,它并不考慮問(wèn)題規(guī)模的大小绩卤,而是從問(wèn)題的最明顯的最小規(guī)模開(kāi)始逐步求解出可能的答案,并...
    fredal閱讀 13,669評(píng)論 0 89
  • 動(dòng)態(tài)規(guī)劃 動(dòng)態(tài)規(guī)劃是一種高性能的牛逼算法江醇,由美國(guó)的R.Bellman提出濒憋,它是動(dòng)態(tài)就是體現(xiàn)在此算法是基于一個(gè)遞推公...
    董澤平閱讀 1,171評(píng)論 0 12
  • 分治算法 一、基本概念 在計(jì)算機(jī)科學(xué)中陶夜,分治法是一種很重要的算法凛驮。字面上的解釋是“分而治之”,就是把一個(gè)復(fù)雜的問(wèn)題...
    Java資訊庫(kù)閱讀 9,774評(píng)論 0 14
  • 上一次聊到動(dòng)態(tài)規(guī)劃的時(shí)候条辟,聊的例子比較簡(jiǎn)單黔夭,但是動(dòng)態(tài)規(guī)劃確實(shí)是比較難的算法宏胯,比較難以理解。動(dòng)態(tài)規(guī)劃其實(shí)算是利用空間...
    堯字節(jié)閱讀 601評(píng)論 0 0
  • 親愛(ài)的家長(zhǎng)們: 你們好本姥! 時(shí)間如白駒過(guò)隙肩袍。一轉(zhuǎn)眼,“晨曦號(hào)”的孩子們已經(jīng)度過(guò)了一年級(jí)的前半部分婚惫。感恩陪...
    靜觀微瀾閱讀 1,323評(píng)論 0 4