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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

动态规划概述

發布時間:2023/12/13 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态规划概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注:第一次看不需要全理解,以后動態規劃做多了,再回來看看,會有更深的理解

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

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

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

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

中級: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?https://blog.csdn.net/hebtu666/article/details/81290789

2018hbcpc dp總結 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?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

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

總結能用動規解決的問題的特點 :

1) 問題具有最優子結構性質。如果問題的最優解所包含的 子問題的解也是最優的,我們就稱該問題具有最優子結 構性質。

2) 無后效性。當前的若干個狀態值一旦確定,則此后過程 的演變就只和這若干個狀態的值有關,和之前是采取哪 種手段或經過哪條路徑演變到當前的這若干個狀態,沒 有關系。?

?

動規解題的一般思路?

例子:?

? ? ? ? ? ? ? ? ?7

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

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

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

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

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

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

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

問題:求 MaxSum(1,1)?
?
D(r, j)出發,下一步只能走D(r+1,j)或者D(r+1, j+1)。故對于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. 將原問題分解為子問題?
?
? 把原問題分解為若干個子問題,子問題和原問題形式相同 或類似,只不過規模變小了。子問題都解決,原問題即解 決(數字三角形例)。

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

2. 確定狀態?
?
? 在用動態規劃解題時,我們往往將和子問題相 關的各個變量的一組取值,稱之為一個“狀 態”。一個“狀態”對應于一個或多個子問題, 所謂某個“狀態”下的“值”,就是這個“狀 態”所對應的子問題的解。?

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

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

?

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

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

?

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

??

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。