怎么使用C++动态规划算法实现矩阵链乘法


这篇文章主要介绍“怎么使用C++动态规划算法实现矩阵链乘法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用C++动态规划算法实现矩阵链乘法”文章能帮助大家解决问题。问题描述:给定n个矩阵的链,矩阵Ai的规模为p(i-1)p(i) (1

动态规划的第一步是寻找最优子结构,然后就可以利用这种子结构从子问题的最优解构造出原问题的最优解。在矩阵链乘法问题中,我们假设A(i)A(i+1)…A(j)的最优括号方案的分割点在A(k)和A(k+1)之间。那么,继续对“前缀”子链A(i)A(i+1)…A(k)进行括号化时,我们应该直接采用独立求解它时所得的最优方案。

递归实现:

 ①对于i=j的情况下,显然有m=0,不需要做任何标量乘法运算。所以,对于所有的i=1、2…n,m[i,i] = 0.

 ②免费云主机域名当i

代码实现【C++】

#include
usingnamespacestd;
#defineN6
#defineMAXVALUE1000000
voidmatrix_chain_order(int*p,intlen,intm[N+1][N+1],ints[N+1][N+1]);
voidprint_optimal_parents(ints[N+1][N+1],inti,intj);
intmain()
{
intp[N+1]={30,35,15,5,10,20,25};
intm[N+1][N+1]={0};
ints[N+1][N+1]={0};
inti,j;
matrix_chain_order(p,N+1,m,s);
cout

结果

关于“怎么使用C++动态规划算法实现矩阵链乘法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。

动态规划的第一步是寻找最优子结构,然后就可以利用这种子结构从子问题的最优解构造出原问题的最优解。在矩阵链乘法问题中,我们假设A(i)A(i+1)…A(j)的最优括号方案的分割点在A(k)和A(k+1)之间。那么,继续对“前缀”子链A(i)A(i+1)…A(k)进行括号化时,我们应该直接采用独立求解它时所得的最优方案。递归实现: ①对于i=j的情况下,显然有m=0,不需要做任何标量乘法运算。所以,对于所有的i=1、2…n,m[i,i] = 0. ②当i
代码实现【C++】结果关于“怎么使用C++动态规划算法实现矩阵链乘法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。

相关推荐: 纯CSS如何实现汉堡按钮

这篇文章主要介绍了纯CSS如何实现汉堡按钮的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇纯CSS如何实现汉堡按钮文章都会有所收获,下面我们一起来看看吧。汉堡按钮汉堡按钮2:css的基本语法是:1、css规则由选择器和一条或多条声明…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/17 11:31
下一篇 03/17 11:31

相关推荐