输入:<A1,A 2,...,An>, Ai是矩阵
输出:计算A1 * A2 * ... * An的最小代价方法
优化解的代价方程
算法实现
Matrix-Chain-Order(p)
n=length(p)-1;
FOR i=1 TO n DO
m[i, i]=0;
FOR l=2 TO n DO /*计算地l对角线*/
FOR i=1 TO n-l+1 DO
j=i+l-1;
m[i, j]=∞;
FOR k = i To j-1 DO /* 计算m[i,j] */
q=m[i, k]+m[k+1, j]+pi-1pkpj
IF q<m[i, j] THEN m[i,j]=q;
Return m.
打印顺序
Print-Optimal-Parens(s, i, j)
IF j=i
THEN Print“A”i;
ELSE
Print“(”
Print-Optimal-Parens(s,i,s[i,j])
Print-Optimal-Parens(s,s[i,j]+1,j)
Print “)”
时间复杂性
计算代价的时间 (l,i,k)三层循环,每层至多n-1步 :
构造最优解的时间:
O(n)
总时间复杂性为:
空间复杂性
使用数组m和S