版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第3章動態(tài)規(guī)劃
DynamicProgramming
1SoftwareCollege,NEU本章主要內(nèi)容矩陣連乘問題
Matrix-ChainMultiplication
動態(tài)規(guī)劃算法的基本要素
ElementsofDynamicProgramming
流水作業(yè)調(diào)度
SchedulingtoMaximizeProfit0-1背包問題
0-1knapsackproblem
最優(yōu)二叉搜索樹
OptimalBinarySearchTrees2SoftwareCollege,NEU1n=0F(n)=1n=1
F(n-1)+F(n-2)n>1例3-1FibonaccinumbersF(4)F(3)F(2)F(2)F(1)F(1)F(0)動態(tài)規(guī)劃算法F(1)F(0)3SoftwareCollege,NEUComputingthenth
fibonaccinumberusingbottom-upiteration:
f(0)=0f(1)=1f(2)=0+1=1f(3)=1+1=2f(4)=1+2=3f(5)=2+3=5
f(n-2)=f(n-1)=f(n)=f(n-1)+f(n-2)4SoftwareCollege,NEU動態(tài)規(guī)劃算法將待求解的問題分解成若干個子問題,先求解子問題,并存儲子問題的解而避免計算重復(fù)的子問題,再由子問題的解得到原問題的解。算法思想5SoftwareCollege,NEU動態(tài)規(guī)劃與分治的聯(lián)系區(qū)別都是分解成子問題,由子問題的解得到原問題的解。分治中子問題相互獨立,而動態(tài)規(guī)劃中子問題互相有聯(lián)系,且存在重復(fù)計算,即存在重疊子問題。6SoftwareCollege,NEU3.1矩陣連乘問題
Matrix-ChainMultiplication
給定n個矩陣{A1,A2,…,An},其中Ai
是一個ri-1×ri
矩陣(1≤i≤n),即Ai×Ai+1是可乘的,求出n個矩陣相乘的最優(yōu)計算次序,使得計算量最小。問題提出設(shè)三個矩陣A1,A2,A3大小分別為10×100,100×5,5×50,考慮(A1(A2
A3)),(A1A2)A3)的結(jié)果與相乘的次數(shù)。7SoftwareCollege,NEU矩陣相乘滿足結(jié)合律,連乘積可以有許多不同的次序。這種次序可以用加括號的方式確定??疾閮蓚€矩陣相乘的情形:C=AB。如果矩陣A,B分別時p×r和r×q
矩陣,則它們的乘積C將是p×q
矩陣,其(i,j)元素為則共需要pqr次數(shù)乘。3.1矩陣連乘問題A1,A2,A3大小分別為10×100,100×5,5×50,(A1(A2
A3)),((A1A2)A3)的結(jié)果相同,都是10×50的矩陣,計算量分別為75000,7500。8SoftwareCollege,NEU完全加括號的矩陣連乘積單個矩陣是完全加括號的;矩陣連乘積A是完全加括號的,則A可表示為2個完全加括號的矩陣連乘積B和C的乘積并加括號,即A=(BC)??紤]n=4的情況,此時矩陣運算A*B*C*D可按以下方式(順序)計算(完全加括號方式):
A*((B*C)*D),
A*(B*(C*D)),
(A*B)*(C*D),(A*(B*C))*D3.1矩陣連乘問題9SoftwareCollege,NEU兩個矩陣的乘法
voidMatrixMultiply(int**a,int**b,int**c,int
ra,intca,
int
rb,int
cb){if(ca!=rb)error(“矩陣不可乘”);
for(inti=0;i<ra;i++)
for(intj=0;j<cb;j++){
intsum=a[i][0]*b[0][j];
for(intk=1;k<ca;k++)sum+=a[i][k]*b[k][j];c[i][j]=sum;}}3.1矩陣連乘問題10SoftwareCollege,NEU窮舉搜索法
對于n個矩陣的連乘積,設(shè)有p(n)個計算次序。我們可以在第k個和第k+1個矩陣之間將原矩陣劃分為兩個子矩陣序列,然后分別對這兩個矩陣子序列完全加括號,最后對所得的結(jié)果加括號,則其中P(n)=C(n-1),3.1矩陣連乘問題11SoftwareCollege,NEU1.分析最優(yōu)解的結(jié)構(gòu)設(shè)A[i:j]為矩陣連乘積AiAi+1···Aj計算A[1:n]的最優(yōu)次序,設(shè)該次序在矩陣Ak和Ak+1之間斷開,1≤k<n,則完全加括號方式為((A1···Ak)(Ak+1···An))總計算量為A[1:k]的加上A[k+1:n]的計算量,再加上A[1:k]和A[k+1:n]相乘的計算量。3.1矩陣連乘問題12SoftwareCollege,NEU最優(yōu)子結(jié)構(gòu)特征計算A[1:n]的一個最優(yōu)次序所包含的計算矩陣子鏈A[1:k]和A[k+1:n]的次序也是最優(yōu)的。矩陣連乘積計算次序問題的最優(yōu)解包含著其子問題的最優(yōu)解,也就是最優(yōu)子結(jié)構(gòu)性質(zhì)。3.1矩陣連乘問題考慮A[1:k]和A[k+1:n]相乘所需的計算量,A[i:k]和A[k+1:j]相乘呢?A[1:k]的結(jié)果為r1*rk的矩陣,A[k+1:n]的結(jié)果為rk+1*rn的矩陣,則它們相乘的計算量為p1*pk*pn13SoftwareCollege,NEU2.建立遞歸關(guān)系設(shè)計算A[i:j]所需的最少次數(shù)為m[i][j],原問題的最優(yōu)解為m[1][n]。當(dāng)
i=j時:A[i:j]=Ai,m[i][i]=0,i=1,2,···,n。當(dāng)i<j時:m[i][j]=m[i][k]+m[k+1][j]+pi-1pkpjk∈
{i,i+1,···,j-1}3.1矩陣連乘問題14SoftwareCollege,NEU采用遞歸方法計算int
RecurMatrixChain(inti,int,j,intp[]){if()return0;
intu=RecurMatrixChain(i,i)+RecurMatrixChain(i+1,j)+p[i-1]*p[i]*p[j];s[i][j]=i;
for(intk=i+1;k<j;k++){
intt=RecurMatrixChain(i,k)+RecurMatrixChain(k+1,j)+p[i-1]*p[k]*p[j];if(t<u){u=t;s[i][j]=k;}}returnu;}參加運算矩陣鏈起始位置矩陣鏈終止位置i==j取第一個斷開位置時計算量記錄當(dāng)前斷開位置循環(huán)取k的可取斷開位置3.1矩陣連乘問題15SoftwareCollege,NEU遞歸樹1······41······12······41······23······41······34······42······23······42······34······41······12······23······34······41······12······31······23······33······34······42······23······32······23······31······12······23.1矩陣連乘問題16SoftwareCollege,NEU可以證明該算法的計算時間T(n)有指數(shù)下界,設(shè)算法中判斷語句和賦值語句花費常數(shù)時間,則由算法的遞歸部分可得關(guān)T(n)的遞歸不等式如下:
因此,當(dāng)n>1時,可用數(shù)學(xué)歸納法證明3.1矩陣連乘問題17SoftwareCollege,NEU對于1≤i≤j≤n,不同的有序?qū)?i,j)對應(yīng)于不同的子問題m[i][j],因此,不同的子問題的個數(shù)最多只有用動態(tài)規(guī)劃解此問題時,在計算過程中,保存已解決的子問題答案,每個子問題只計算一次,而在后面用到時簡單地查一下,從而避免了大量的重復(fù)計算。3.1矩陣連乘問題18SoftwareCollege,NEU2······42······23······41······23······34······41······11······41······32······33.1矩陣連乘問題3.計算最優(yōu)值19SoftwareCollege,NEU3.計算最優(yōu)值對于m[1][n]可以按照下面順序構(gòu)成m[1][2]m[2][3]m[3][4]m[4][5]……m[n-1][n]m[1][3]m[2][4]m[3][5]……m[n-2][n]m[1][4]m[2][5]m[3][6]……m[n-3][n]m[1][n-1]m[2][n]m[1][n]3.1矩陣連乘問題計算m[i][j]時,只用到已計算出的m[i][k]和m[k+1][j]20SoftwareCollege,NEU3.計算最優(yōu)值置所有只有一個矩陣的矩陣鏈計算量為0,即m[i][i]=0,i=1,2,···,n。通過上一步的結(jié)果可以得到所有矩陣鏈長度為2的子問題的最優(yōu)計算量。通過上兩步的結(jié)果可以得到所有矩陣鏈長度為3的子問題的最優(yōu)計算量
………………3.1矩陣連乘問題計算m[i][j]時,只用到已計算出的m[i][k]和m[k+1][j]21SoftwareCollege,NEU
A1A2A3A4A5A630×3535×1515×55×1010×2020×25例3-2設(shè)要計算矩陣連乘積A1A2A3A4A5A6,其中各矩陣的維數(shù)分別為123456
00000015750262575010005000m[1][1]+m[2][3]+p0p1p3=7875m[1][3]=minm[1][2]+m[3][3]+p0p2p3=180009375118751512543757125105002500537535007875ij22SoftwareCollege,NEU3.計算最優(yōu)值voidMatrixChain(intp,intn,int**m,int**s){for(inti=1;i<=n;i++)m[i][i]=
;//單個矩陣的計算量
for(intr=2;r<=n;r++){//r為每次循環(huán)矩陣鏈的長度
for(inti=1;i<=
;i++){
intj=i+r-1;m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j];s[i][j]=i;for(intk=i+1;k<j;k++){
intt=m[i][k]+m[k+1][j]+
;if(t<m[i][j]){m[i][j]=t;s[i][j]=k;}}}}}3.1矩陣連乘問題0n–r+1取第一個可取位置,即斷開位置為i循環(huán)取k的可取位置p[i-1]*p[k]*p[j]23SoftwareCollege,NEU計算過程先計算出m[i][i]=0,i=1,2,···,n,然后,依次計算m[i][i+1],i=1,2,···,n-1(矩陣長度為2);m[i][i+2],i=1,2,···,n-2,(矩陣鏈長度為3);···.每次計算只用到已計算出的m[i][k]和m[k+1][j]計算順序
m[1][1],m[2][2],m[3][3]….m[n][n]m[1][2],m[2][3],m[3][4]····m[n-1][n]m[1][3],m[2][4],m[3][5]····m[n-2][n]·····
m[1][n-1],m[2][n]
m[1][n]3.1矩陣連乘問題24SoftwareCollege,NEU算法復(fù)雜度算法MatrixChain
的主要計算量取決于程序中對r,i和k的三重循環(huán)。循環(huán)體內(nèi)的計算量為O(1),三重循環(huán)的總次數(shù)是O(n3),所以,算法的計算時間上界為O(n3)。3.1矩陣連乘問題25SoftwareCollege,NEU4.構(gòu)造最優(yōu)解上述算法只是明確給出了矩陣最優(yōu)連乘次序所用的數(shù)乘次數(shù)m[1][n],并未明確給出最優(yōu)連乘次序,即完全加括號方法。但是以s[i][j]為元素的2維數(shù)組卻給出了足夠的信息。事實上,s[i][j]=k說明,計算連乘積A[i:j]的最佳方式應(yīng)該在矩陣Ak
和Ak+1之間斷開,即最優(yōu)加括號方式為(A[i:k])(A[k+1:j])。3.1矩陣連乘問題26SoftwareCollege,NEU123456011333023330333045050考慮計算A[1][6]時的順序S[1][6](A1…A3)(A4…A6)S[1][3]A1(A2A3)S[4][6](A4A5)
A6S[1][1]=0S[2][3]=2A1((A2)(A3))S[2][2]=S[3][3]=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版學(xué)校食堂肉類食材采購及食品安全風(fēng)險評估與培訓(xùn)服務(wù)合同3篇
- 二零二五年度高端定制家具采購合同范本9篇
- 2025版小區(qū)停車場租賃合同附停車場升級改造及智慧化服務(wù)協(xié)議3篇
- 二零二五版鍋爐采購、安裝及智能化節(jié)能系統(tǒng)合同3篇
- 2025年度美容行業(yè)美容院美容產(chǎn)品品牌推廣合同范本4篇
- 全新2025年度技術(shù)咨詢合同3篇
- 2025版團購業(yè)務(wù)金融風(fēng)險管理合同3篇
- 公共基礎(chǔ)-2021年試驗檢測師《公共基礎(chǔ)》真題
- 土壤生物技術(shù)改良策略考核試卷
- 居民健康自我管理培訓(xùn)考核試卷
- 2024版塑料購銷合同范本買賣
- JJF 2184-2025電子計價秤型式評價大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 2024年安徽省中考數(shù)學(xué)試卷含答案
- 2025屆山東省德州市物理高三第一學(xué)期期末調(diào)研模擬試題含解析
- 2024年滬教版一年級上學(xué)期語文期末復(fù)習(xí)習(xí)題
- 兩人退股協(xié)議書范文合伙人簽字
- 2024版【人教精通版】小學(xué)英語六年級下冊全冊教案
- 汽車噴漆勞務(wù)外包合同范本
- 2024年重慶南開(融僑)中學(xué)中考三模英語試題含答案
- 2023年最新的校長給教師春節(jié)祝福語
評論
0/150
提交評論