实验报告
课程名称 《算法分析与设计》 实验日期 2020 年 4 月14日 至 2020年 4 月 21 日
学生姓名 戴昊宇 所在班级 计算机184 学号 2018212212015
实验名称 矩阵链的乘法
实验地点 同组人员 无
1.问题
设A1,A2,…,An为n个矩阵的序列,其中Ai为Pi*Pi阶矩阵,这个矩阵链的输入用向量P=<P0,P1,…,Pn>给出。给定向量P,确定一种乘法次序,使得基本运算的总次数达到最小。
2.解析
刻画一个最优解的结构特征;
递归地定义最优解的值;
计算最优解的值,通常采用自底向上的方法;
利用计算出的信息构造一个最优解。
3.设计
递归算法:RecurMatrixChain(P,i,j)
输入:矩阵链Ai…j的输入向量P
输出:计算Ai…j所需最小乘法运算次数m和最后一次运算的位置
if i=j then
m[i,j]=0;s[i,j]=i; return m[i,j]
m[i,j]=无穷大
s[i,j]=i
for k=i to j-1 do
q=RecurMatrixChain(P,i,k)+RecurMatrixChain(P,k+1,j)+Pi-1PkpPj
if q<m[i,j]
then m[i,j]=q
s[i,j]=k
return m[i,j]
4.分析
算法复杂度:O(2^(n-1))
5.源码
https://github.com/yyqx-1128/text