小白笔记--------------------矩阵连乘问题(求怎么加括号运算量最小)

动态规划DP——矩阵连乘最小计算量 1.问题分析 给定n个矩阵{A1,A2,A3,……,An},其中,Ai和Ai+1(i=1,2,3,……,n-1)是可乘的。矩阵乘法如图所示: 用括号的方法表示矩阵连乘的次序,不同的计算次序计算量是不同的,找出一种括号的方法,使得矩阵连乘的计算量最小。 例如: A1是M(5×10)的矩阵 A2是M(10×100)的矩阵 A3是M(100×2)的矩阵 那么有两种括号的方法: ... 阅读详情
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void print(int(*n)[7]);
void MatrixChain(int*p,int n,int(*m)[7],int(*s)[7]);
main(int argc, char** argv)
{		
	int a1[30][35],a2[35][15],a3[15][5],a4[5][10],a5[10][20],a6[20][25];
	int p[7] = {30,35,15,5,10,20,25};
	int n = 6;
	int m[7][7],s[7][7];//m矩阵表示连乘的运算次数,s表示括号的位置
	MatrixChain(p,n,m,s);
	print(m);
	print(s);
}
void print(int (*n)[7]){
	int i ,j;
	for(i = 0;i < 7;i++){
		for(j = 0;j < 7;j++){
			printf("%d\t",n[i][j]);	
		}
		printf("\n");
	}
}
void MatrixChain(int *p,int n, int (*m)[7],int (*s)[7]){
	int i ,k ,r;
	for(i = 1;i <= n ;i++){
		m[i][i] = 0;
	}
	for(r = 2;r <= n;r++){//r表示矩阵连乘的个数,最小为2
		for(i = 1;i <= n-r+1;i++){//i代表起始位置,j代表最终位置
			int j = i+r-1;
			m[i][j] = m[i+1][j]+p[i-1]*p[i]*p[j];
			s[i][j] = i;
			for(k = i+1;k <j;k++){
				int t = m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];
				if(t < m[i][j]){
					m[i][j] = t;
					s[i][j] = k;
				}
			}
		}
	}
}

矩阵连乘最佳括号方式-动态规划算法 一、问题描述          给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2,…,n-1。要算出这n个矩阵连乘积A1A2…An。由于矩阵乘法满足结合律,故计算矩阵连乘积可以有许多不同的计算次序。这种计算次序可以用括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全括号,则可以依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。完 阅读详情

相关推荐

快速计算----矩阵连乘--DP

给定 n 个矩阵{A1,A2,A3,…,An},其中,Ai 和 Ai+1(i=1,2,…,n−1)是可乘的。用括号的方法表示矩阵连乘的次序,不同的计算次序计算量(乘法次数)是不同的,找出一种括号的方法,使得矩阵连乘的计算量最小例如:A1 是 M5×10 的矩阵;A2 是 M10×100 的矩阵;A3 是 M100×2 的矩阵。那么有两种括号的方法:(1)(A1 A2)A3;(2)A1(A2 ...

丫丫的博客 4600

矩阵连乘问题实现(最佳括号方式-动态规划算法)

矩阵连乘问题分析和实现用于动态规划 最佳括号方式-动态规划算法

矩阵连乘--动态规划

动态规划算法解矩阵连乘问题 1 用动态规划算法解矩阵连乘问题 (1)问题的描述 给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2,…,n-1。要算出这n个矩阵连乘积A1A2…An。由于矩阵乘法满足结合律,故计算矩阵连乘积可以有许多不同的计算次序。这种计算次序可以用括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全括号

qq_34243327的博客 631

矩阵连乘积的括号方式数

给定n个矩阵{A1,…,An},其中Ai和Ai+1可乘,i=1,2,…,n-1。考察矩阵连乘括弧的方式数。 如四个矩阵连乘积A1A2A3A4,共有五种不同的括弧方式: ( A1 ( A2 ( A3 A4 ) ) ) ( A1 ( ( A2 A3 ) A4 ) ) ( ( A1A2 ) ( A3 A4 ) ) ( A1 ( A2 A3 ) A4 ) ( ( ( A1 A2 ) A3 ) A4 )

矩阵链乘法问题(给A1A2A3...An括号,使之乘法次数最小)动态规划问题C++实现...

// 矩阵链乘法问题.cpp : Defines the entry point for the console application. //给A1A2A3...An括号,使之乘法次数最小 //动态规划问题 #include "stdafx.h" #include&lt;iostream&gt; #define N 100 #define Infinity 65535 using...

pleasetojava 540

矩阵连乘问题

给定n个矩阵A1,A2.......An,其中Ai与Ai+1是可乘的。     由于矩阵的乘法满足结合律,故计算矩阵连乘积可以有许多不同的计算次序。这中计算次序可以用括号的方式来确定。例如,矩阵连乘积A1A2A3A4可以有一下5种不同的完全括号方式:     (A1(A2(A3A4)))     (A1((A2A3)A4))     ((A1A2)(A3A4))     ((A1(

simmerlee的专栏 1万+

算法之动态规划-矩阵相乘(matrix-chain multiplication)

Matrix-chain multiplication给定一串矩阵 A1,A2...AnA1,A2...An,计算矩阵的值:A1A2A3..AnA_1A_2A_3..A_n。对于这串矩阵序列,不同的括号方式,会导致截然不同的计算量。我们需要做的就是计算出如何括号,达到最少计算量。使用动态规划解first step: Characterize the structure of an optima

求知若渴!大智若愚! 1万+

学习日历day07 动态规划-矩阵连乘问题笔记

以下为观看b站up四七777777的动态规划 矩阵连乘问题视频后做的相关笔记,有不懂的uu可以上b站观看相关视频。

fearless9的博客 1296

矩阵连乘算法思想

(1)问题的描述 给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2,…,n-1。要算出这n个矩阵连乘积A1A2…An。由于矩阵乘法满足结合律,故计算矩阵连乘积可以有许多不同的计算次序。这种计算次序可以用括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全括号,则可以依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。完全括号矩阵

4917

矩阵连乘问题---算法分析之动态规划

动态规划方法解决矩阵连乘问题,即寻多个矩阵连乘时的最好的括号方式使得总的乘法两最小; 可以设定矩阵个数,手动输入矩阵的阶,显示动态规划算法的表格,即乘法量和括号信息; 多文档,C++6.0

矩阵连乘问题 动态规划算法

矩阵连乘问题 动态规划算法动态规划动态规划问题的特征动态规划法的步骤矩阵连乘问题分析动态规划法 解分析最优解结构建立递归关系计算最优值算法计算矩阵连乘积的动态规划算法构造最优解 动态规划 动态规划问题的特征 动态规划算法的有效性依赖于问题本身所具有的两个重要性质: 1.最优子结构 当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质 2.子问题重叠 在使用递归算法自顶向下问题时,产生的子问题并不总是新问题,有些子问题被反复计算过,动态规划算法(自底向上)正是利用了子问题重叠性质,对

qq_43427808的博客 3416

矩阵连乘

括号的方法表示矩阵连乘的次序,不同的计算次序计算量(乘法次数)是不同的,找出一种括号的方法,使得矩阵连乘的计算量最小。时间复杂度:语句 t=m[i][k] + m[k+1][j] + p[i−1]*p[k]*p[j],在3层for循环中嵌套,该语句的执行次数为O(n3),时间复杂度为O(n3)。Ak)(Ak+1Ak+2…空间复杂度:该程序的输入数据的数组为p[],辅助数组m[][]、s[][],因此空间复杂度为O(n2)。如果两个矩阵,第1个矩阵的列等于第2个矩阵的行,那么这两个矩阵是可乘的。

m0_73460731的博客 1345

动态规划——矩阵连乘问题(个人学习用)

(1).找出最优解的性质(2).动态规划方程(3).自底向上计算最优值。

m0_74316795的博客 2307

动态规划--矩阵连乘

假期 2020.01.19 题目描述 给定 n 个矩阵{A1,A2,A3,A4,…,An},其中,Ai,A(i+1)( i = 1,2,…,n - 1)是可乘的。用括号的方法表示矩阵连乘得次序,不同的计算次序计算量是不一样的,找出一种括号的方法,使得连乘的计算量最小。 思路分析 相信都直到矩阵乘法是实现的,这儿就不赘诉。而连乘就是多个矩阵相乘的运算,如下图: 可以看出不同的运算次序的运...

计算机科学与技术专业学生的成长之路 559

矩阵连乘 动态规划(转载)

<br />一、问题描述<br />         给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2,…,n-1。要算出这n个矩阵连乘积A1A2…An。由于矩阵乘法满足结合律,故计算矩阵连乘积可以有许多不同的计算次序。这种计算次序可以用括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全括号,则可以依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。完全括号矩阵连乘积可递归地定义为:<br />        (1)单个矩阵是完全括号

jingWithme的专栏 871
上一篇: 小白笔记----------求众数
下一篇: 小白笔记--------------------构造最长公共子序列
Aaron92
博客等级 码龄11年 14粉丝 103原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值