算法设计与分析——动态规划——矩阵连乘问题
動態(tài)規(guī)劃與分治法的異同:
相同點:其基本思想都是將待求解問題分解為若干子問題,先求解子問題,再結(jié)合這些子問題的解得到原問題的解。
差異點:與分治法不同的是,適合用動態(tài)規(guī)劃法求解的問題經(jīng)分解得到的子問題往往不是相互獨立的。有些問題分解后的子問題往往是重復的,此時若用分支法則會重復計算耗費時間內(nèi)存。
總結(jié):為了達到避免重復計算,可以用一個表來記錄所有已解決的子問題的答案。不管該子問題以后是否被用到,只要它被計算過,就將其結(jié)果填入表中。
步驟:
找出最優(yōu)解的性質(zhì),刻畫其結(jié)構(gòu)特征。
遞歸地定義最優(yōu)值。
以自底向上的方式計算最優(yōu)值。
根據(jù)計算最優(yōu)值得到的信息構(gòu)造最優(yōu)解。
矩陣連乘問題
分析最優(yōu)解的結(jié)構(gòu)
建立遞歸關(guān)系
計算最優(yōu)值
構(gòu)造最優(yōu)解
動態(tài)規(guī)劃算法的基本要素
最優(yōu)子結(jié)構(gòu):當問題的最優(yōu)解包含了其子問 題的最優(yōu)解時,稱該問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)。
重疊子問題:在用遞歸算法自頂向下解此問題時,每次產(chǎn)生的子問題并不總是新問題,有些子問題被反復計算。動態(tài)規(guī)劃算法對每個子問題只解一次,然后將解保存在一個表格中。
問題描述:
給定n個矩陣:A1,A2,…,An,其中Ai與Ai+1是可乘的,i=1,2…,n-1。確定計算矩陣連乘積的計算次序,使得依此次序計算矩陣連乘積需要的數(shù)乘次數(shù)最少。輸入數(shù)據(jù)為矩陣個數(shù)和每個矩陣規(guī)模,輸出結(jié)果為計算矩陣連乘積的計算次序和最少數(shù)乘次數(shù)。
問題解析:
由于矩陣乘法滿足結(jié)合律,故計算矩陣的連乘積可以有許多不同的計算次序。這種計算次序可以用加括號的方式來確定。若一
總結(jié)
以上是生活随笔為你收集整理的算法设计与分析——动态规划——矩阵连乘问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 聊一款支持高亮度防窥屏的笔记本电脑
- 下一篇: 算法设计与分析——动态规划——数字三角形