给定n个矩阵{A1, A2, …,An},其中,Ai与Ai+1是可乘的,计算这n个矩阵的连乘积。从中找出一种乘次数最少的计算次序(矩阵连乘最优顺序Java语言实现

矩阵连乘最优顺序Java语言实现 给定n个矩阵{A1, A2, …,An},其中,Ai与Ai+1是可乘的,计算这n个矩阵的连乘积。从中找出一种乘次数最少的计算次序

问题描述:

矩阵连乘问题 给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2 ,…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少

import org.omg.CORBA.PUBLIC_MEMBER;

public class MatrixMultiply {

	static int MN; //表示矩阵链中矩阵的数目 
	static int[]p; //存放各个矩阵的维数
	static int [][][]A;//存放要进行连乘的多个矩阵
	static int [][]m; //用来存放Ai到Aj的最少乘次数
	static int [][]s; //用来存放Ai到Aj的最后断开位置 
	//构造函数
	public MatrixMultiply() {
		MN=0;
		p=new int [MN];	
	}
	//构造函数,L为矩阵的数目 
	public MatrixMultiply(int L)  {  
		MN=L; 
	  p=new int [MN+1];
	  A=new int [MN][][];  
	  m=new int [MN+1][MN+1]; 
	  s=new int [MN+1][MN+1];  //随机生成连乘矩阵的维数[1-11]  
	  for(int i=0;i<=MN;i++)  
	  { 
		  p[i]=(int) Math.round(Math.random()*10)+1; 
	  } 
	 
	  //随机生成各个矩阵 
	  for(int i=0;i

给定n个矩阵{A1, A2, …,An},其中,Ai与Ai+1是可乘的,计算这n个矩阵的连乘积。从中找出一种乘次数最少的计算次序(矩阵连乘最优顺序Java语言实现_第1张图片

给定n个矩阵{A1, A2, …,An},其中,Ai与Ai+1是可乘的,计算这n个矩阵的连乘积。从中找出一种乘次数最少的计算次序(矩阵连乘最优顺序Java语言实现_第2张图片

你可能感兴趣的:(Java设计与开发)