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