问题描述:
设A1、A2...An为n个矩阵的序列,其中Ai为Pi-1×Pi阶矩阵,这个矩阵链的输入用向量P=<P0,P1,....Pn>给出。给定向量P,确定一种乘法次序,使得基本运算的总次数达到最小。
分析:我是利用动态规划的思想做的,因为递归方式的复杂度是很大的。然后自己造数据,按照伪代码模拟了好几遍,那就放一个稍微不凌乱点的。
开始被(A1A2)A3这个东西的表象蒙蔽了,其实每次对k进行讨论时,算(A1A2)A3,只要算P0P2P3即可,P0是第一个矩阵的row,P2是第二个矩阵的col,P3是第三个矩阵的row,为什么可以这么算,可以自己用特殊值代一下。
伪代码:

For r from 2 to n: For i from 1 to n-r+1: j=i+r-1; m[i][j]=m[i+1][j]+Pi-1PiPj; s[i][j]=i; For k from i to j-1: t=m[i][k]+m[k][j]+Pi-1PkPj; If(t<m[i][j]){m[i][j]=t;s[i][j]=k;}
复杂度:O(n³)