日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

动态规划概述

發(fā)布時(shí)間:2023/12/13 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态规划概述 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

注:第一次看不需要全理解,以后動(dòng)態(tài)規(guī)劃做多了,再回來看看,會(huì)有更深的理解

先符上其它文章,看完這篇就可以開始看這些咯。

萌新: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? https://blog.csdn.net/hebtu666/article/details/79912328

入門: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://blog.csdn.net/hebtu666/article/details/79964233

初級(jí):(目前沒寫好) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?https://blog.csdn.net/hebtu666/article/details/80212624

中級(jí): ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?https://blog.csdn.net/hebtu666/article/details/81290789

2018hbcpc dp總結(jié) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?https://blog.csdn.net/hebtu666/article/details/80402820

HDU1029 HDU1087 HDU1176?HDU1257 POJ1458 https://blog.csdn.net/hebtu666/article/details/81390118

POJ2533 HDU1114 HDU1260 HDU1160 ? ? ? ? ? ? ? ? ? https://blog.csdn.net/hebtu666/article/details/81393716

HDU1069 POJ3616 POJ1088 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://blog.csdn.net/hebtu666/article/details/81811310

POJ1189 UVA12511 HDU2845 HBCPC2018 K ? ? ? ?https://blog.csdn.net/hebtu666/article/details/81837461

概述:動(dòng)態(tài)規(guī)劃算法通常用于求解具有某種最優(yōu)性質(zhì)的問題。在這類問題中,可能會(huì)有許多可行解。每一個(gè)解都對(duì)應(yīng)于一個(gè)值,我們希望找到具有最優(yōu)值的解。動(dòng)態(tài)規(guī)劃算法與分治法類似,其基本思想也是將待求解問題分解成若干個(gè)子問題,先求解子問題,然后從這些子問題的解得到原問題的解。與分治法不同的是,適合于用動(dòng)態(tài)規(guī)劃求解的問題,經(jīng)分解得到子問題往往不是互相獨(dú)立的。若用分治法來解這類問題,則分解得到的子問題數(shù)目太多,有些子問題被重復(fù)計(jì)算了很多次。如果我們能夠保存已解決的子問題的答案,而在需要時(shí)再找出已求得的答案,這樣就可以避免大量的重復(fù)計(jì)算,節(jié)省時(shí)間。我們可以用一個(gè)表來記錄所有已解的子問題的答案。不管該子問題以后是否被用到,只要它被計(jì)算過,就將其結(jié)果填入表中。這就是動(dòng)態(tài)規(guī)劃法的基本思路。具體的動(dòng)態(tài)規(guī)劃算法多種多樣,但它們具有相同的填表格式。(摘自百度百科)

總結(jié)能用動(dòng)規(guī)解決的問題的特點(diǎn) :

1) 問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)。如果問題的最優(yōu)解所包含的 子問題的解也是最優(yōu)的,我們就稱該問題具有最優(yōu)子結(jié) 構(gòu)性質(zhì)。

2) 無后效性。當(dāng)前的若干個(gè)狀態(tài)值一旦確定,則此后過程 的演變就只和這若干個(gè)狀態(tài)的值有關(guān),和之前是采取哪 種手段或經(jīng)過哪條路徑演變到當(dāng)前的這若干個(gè)狀態(tài),沒 有關(guān)系。?

?

動(dòng)規(guī)解題的一般思路?

例子:?

? ? ? ? ? ? ? ? ?7

? ? ? ? ? ? ?3 ? ?8 ? ? ? ?

? ? ? ? ? 8 ? ?1 ? ?0 ? ?

? ? ? ?2 ? ?7 ? ?4 ? ?4

? ? ?4 ? ?5 ? 2 ? 6 ? ? 5 ?

在上面的數(shù)字三角形中尋找一條從頂部到底邊的路徑,使得 路徑上所經(jīng)過的數(shù)字之和最大。路徑上的每一步都只能往左下或 右下走。只需要求出這個(gè)最大和即可,不必給出具體路徑。?

用二維數(shù)組存放數(shù)字三角形。?
?
?D( r, j) ? : 第r行第 j 個(gè)數(shù)字(r,j從1開始算) ?

MaxSum(r, j) : ? 從D(r,j)到底邊的各條路徑中?最佳路徑的數(shù)字之和。 ?

問題:求 MaxSum(1,1)?
?
D(r, j)出發(fā),下一步只能走D(r+1,j)或者D(r+1, j+1)。故對(duì)于N行的三角形:?
?
? if ( r == N) MaxSum(r,j) = D(r,j) ?

else ?MaxSum( r, j) = Max{ MaxSum(r+1,j), MaxSum(r+1,j+1) } + D(r,j)?


1. 將原問題分解為子問題?
?
? 把原問題分解為若干個(gè)子問題,子問題和原問題形式相同 或類似,只不過規(guī)模變小了。子問題都解決,原問題即解 決(數(shù)字三角形例)。

? 子問題的解一旦求出就會(huì)被保存,所以每個(gè)子問題只需求 解一次。?

2. 確定狀態(tài)?
?
? 在用動(dòng)態(tài)規(guī)劃解題時(shí),我們往往將和子問題相 關(guān)的各個(gè)變量的一組取值,稱之為一個(gè)“狀 態(tài)”。一個(gè)“狀態(tài)”對(duì)應(yīng)于一個(gè)或多個(gè)子問題, 所謂某個(gè)“狀態(tài)”下的“值”,就是這個(gè)“狀 態(tài)”所對(duì)應(yīng)的子問題的解。?

所有“狀態(tài)”的集合,構(gòu)成問題的“狀態(tài)空間”。“狀態(tài) 空間”的大小,與用動(dòng)態(tài)規(guī)劃解決問題的時(shí)間復(fù)雜度直接相關(guān)。 在數(shù)字三角形的例子里,一共有N×(N+1)/2個(gè)數(shù)字,所以這個(gè) 問題的狀態(tài)空間里一共就有N×(N+1)/2個(gè)狀態(tài)。 ? ? ? ? 整個(gè)問題的時(shí)間復(fù)雜度是狀態(tài)數(shù)目乘以計(jì)算每個(gè)狀態(tài)所需 時(shí)間。 ? ? ? ? ? ? 在數(shù)字三角形里每個(gè)“狀態(tài)”只需要經(jīng)過一次,且在每個(gè) 狀態(tài)上作計(jì)算所花的時(shí)間都是和N無關(guān)的常數(shù)。

?
??用動(dòng)態(tài)規(guī)劃解題,經(jīng)常碰到的情況是,K個(gè)整型變量能 構(gòu)成一個(gè)狀態(tài)(如數(shù)字三角形中的行號(hào)和列號(hào)這兩個(gè)變量 構(gòu)成“狀態(tài)”)。如果這K個(gè)整型變量的取值范圍分別是 N1, N2, ……Nk,那么,我們就可以用一個(gè)K維的數(shù)組 array[N1] [N2]……[Nk]來存儲(chǔ)各個(gè)狀態(tài)的“值”。

?

3. 確定一些初始狀態(tài)(邊界狀態(tài))的值?
?
? ? ? 以“數(shù)字三角形”為例,初始狀態(tài)就是底邊數(shù)字,值 就是底邊數(shù)字值。?

4. 確定狀態(tài)轉(zhuǎn)移方程?
?
? ? ? ?定義出什么是“狀態(tài)”,以及在該 “狀態(tài)”下的“值”后,就要 找出不同的狀態(tài)之間如何遷移――即如何從一個(gè)或多個(gè)“值”已知的 “狀態(tài)”,求出另一個(gè)“狀態(tài)”的“值”(“人人為我”遞推型)。狀 態(tài)的遷移可以用遞推公式表示,此遞推公式也可被稱作“狀態(tài)轉(zhuǎn)移方 程”。

?

做題做多了再回來看看這篇概念,有不一樣的體會(huì)。

??

總結(jié)

以上是生活随笔為你收集整理的动态规划概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。