免(miǎn)費谘詢熱線
13621929115動態規劃算法(fǎ)的核心(xīn)就是記(jì)住已(yǐ)經(jīng)解決過的子問題的解記(jì)住求解的(de)方式有兩種:①自頂向下的備忘錄法②自底向上動態規劃的經典模型線性模型線(xiàn)性模型的是動態規劃中最常(cháng)用的模型,上文(wén)講到的鋼條切割問題就是經典的線性模型,這裏(lǐ)的線性指的是狀態的排布是呈線(xiàn)性的。
【例題(tí)1】是一個經典的麵試題(tí),www.17C.com將它作為線性(xìng)模型的敲門磚上(shàng)海模型廠家【例題1】在(zài)一個夜黑風高的(de)晚上,有n(n <= 50)個小朋友在橋的這邊,現在他們需要過橋,但是由於橋(qiáo)很窄,每次隻允許不大於兩人通過,他(tā)們隻有一個手電(diàn)筒,所以每次過橋的兩個人需要把手電筒帶回來,i號小朋友過(guò)橋的時間(jiān)為T[i],兩個人過橋(qiáo)的總時間為二者中(zhōng)時間(jiān)長者。
問所有小朋友過橋的總時間最短是多少
每(měi)次上海模型廠家過橋的時候(hòu)最多兩個(gè)人,如果橋這邊還有人,那麽還得回來一個人(送手電筒(tǒng)),也就是說N個人過橋的次數(shù)為2*N-3(倒推,當橋這邊隻剩兩個人時隻需要一次,三個人的情況為來回一次後加(jiā)上兩個人的情況(kuàng)…)有一個人需要來(lái)回(huí)跑,將手電筒(tǒng)送回來(也許不是同一個人,realy?!)這個回來的(de)時間是沒辦法省去的,並且回來上海模型(xíng)廠家的次數也是確定的,為(wéi)N-2,如果是我,我會選擇讓跑的最快的人來幹(gàn)這件事情,但是我錯了…如果總是跑(pǎo)得最(zuì)快(kuài)的(de)人跑回來的話,那麽(me)他在每次別人過橋的時候一定得跟過去,於是就變成就是很簡單的問題(tí)了,花費(fèi)的總時間:。
T = minPTime * (N-2) + (totalSum-minPTime)來看一組數據上海模型廠家 四個人過橋(qiáo)花費的時(shí)間分別(bié)為 1 2 5 10,按照上麵的公式答案是19,但是實際答案應該是17具體步驟是(shì)這樣的(de):。
第(dì)一步:1和2過去,花費時間2,然後1回來(花費時間1);第二歩:3和4過去,花費時間10,然後2回來(花費時間2);第(dì)三部:1和2過(guò)去,花費時間2,總耗時(shí)17所以(yǐ)之前的貪心想法是不對上海模型廠(chǎng)家的www.17C.com先將所有人按花費時間遞增(zēng)進行排序,假設前i個人過河花費的最少時間(jiān)為opt[i],那麽(me)考慮前i-1個人過河的情況,即河這邊(biān)還有1個(gè)人,河那邊有i-1個人,並且這時候手電筒肯(kěn)定在對岸,所以opt[i] = opt[i-1] + a[1] + a[i] (讓花費時間最少的人把手電筒送過來,然後和第i上海模型廠(chǎng)家個人(rén)一起過河(hé))如果河這邊還有(yǒu)兩個人,一個是第i號,另外一個無所謂,河那邊有i-2個人,並且(qiě)手電筒肯定在對岸,所以opt[i] = opt[i-2] + a[1] + a[i] + 2*a[2] (讓花費時間最少的人把電筒送過來,然後第i個人和另外(wài)一個人一起過(guò)河,由(yóu)於花費時間最少的人在(zài)這邊,所以下(xià)一次上海模型廠家送手電筒過(guò)來的一定是(shì)花費(fèi)次少(shǎo)的(de),送過來後花費最少的和(hé)花費次(cì)少的一起過河,解決問(wèn)題(tí))。
所以 opt[i] = min{opt[i-1] + a[1] + a[i] , opt[i-2] + a[1] + a[i] + 2*a[2] }區間模型區間模型的狀態表示一般為d[i][j],表示區(qū)間[i, j]上(shàng)海模型廠家上的最優解,然後通過狀態轉(zhuǎn)移計算出[i+1, j]或(huò)者[i, j+1]上的最(zuì)優解,逐步擴大區間的範圍,最終求得[1, len]的(de)最優解。
【例題2】給定一個長度為(wéi)n(n j-1時也(yě)是有意義的,它代表的(de)是空串,空串也是(shì)一(yī)個回文串,所以這種情況下d[i+1][j-1] = 0);當A[i] != A[j]上海模型廠家時,www.17C.com將它變成(chéng)更小的(de)子問題求解,www.17C.com有兩種(zhǒng)決策:。
1、在A[j]後麵添加一個字符A[i];2、在(zài)A[i]前麵添加一個字符A[j];根(gēn)據兩種決策列出狀態轉移方(fāng)程為:d[i][j] = min{ d[i+1][j], d[i][j-1] } + 1; (每次狀(zhuàng)態轉移(yí),區間長度增加1)
空間複雜度O(n^上海模型廠家2),時間複雜(zá)度O(n^2), 下文會提到將空間複雜度降為O(n)的優化算法背包(bāo)模型(xíng)背包問題(tí)是動態規劃中一個最典型的問題之一由(yóu)於網上有(yǒu)非常詳盡的背包講解,這裏隻將(jiāng)常用部分抽出來【例題3】
有(yǒu)N種物品(pǐn)(每種物品1件(jiàn))和一個容量為V的背包(bāo)放(fàng)入第 i 種物品耗費的空間是Ci,得到的價值是(shì)Wi求解將哪些物品裝上(shàng)海模型廠家入背包可使價值總和(hé)最大f[i][v]表示前i種物品恰好放入一個容量為v的背(bèi)包可以獲得的最大價值。
決策為第i個物品在前i-1個物品放(fàng)置(zhì)完畢後(hòu),是(shì)選擇放還是不放,狀態轉移方程為(wéi):f[i][v] = max{ f[i-1][v], f[i-1][v – Ci] +Wi }時間複雜度O(VN),空間複(fù)雜度O上(shàng)海模型廠(chǎng)家(VN) (空間複雜度可利用滾動(dòng)數組進行優化達到O(V) )。
Copyright © 2002-2020 上海潤之模型設計有限公司 版權所有 展示模型,展品模型,展(zhǎn)廳模型(xíng),展示道具,展廳展品(pǐn),展品道具,模型定製,模型公司,上海模型公司 備案號:滬ICP備20018260號