算法导论15.2 矩阵链乘法
2012-12-27 11:10
183 查看
下面讲述一下动态规划法的一个应用实例——矩阵链乘法。
下面是Java语言实现的矩阵链乘法,代码按照算法导论严格编写,大家可以对照着算法导论进行学习。
实现代码如下:
利用上面的代码,现在对书中的例子和15.2-1练习题给出运行结果。
书中例子的运行结果:
习题15.2-1的运行结果:
下面是Java语言实现的矩阵链乘法,代码按照算法导论严格编写,大家可以对照着算法导论进行学习。
实现代码如下:
package homework.part2.work1; public class Matrix_Chain { public int[][] m; public int[][] s; public static void main(String[] args) { // TODO Auto-generated method stub int[] array={5,10,3,12,5,50,6}; Matrix_Chain chain=new Matrix_Chain(); chain.matrix_chain_order(array); chain.matrix_chain_print(chain.s, 0, array.length-2); } public void matrix_chain_order(int[] array) { int n=array.length-1; m=new int ;s=new int ; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { m[i][j]=0;s[i][j]=0; } } for(int chainlength=2;chainlength<=n;chainlength++) { for(int i=0;i<n-chainlength+1;i++) { int j=i+chainlength-1; m[i][j]=Integer.MAX_VALUE; for(int k=i;k<j;k++) { int q=m[i][k]+m[k+1][j]+array[i]*array[k+1]*array[j+1]; if(q<m[i][j]) { m[i][j]=q; s[i][j]=k; } } } } } public void matrix_chain_print(int[][] s,int i,int j) { if(i==j) { System.out.print("A"+i); }else { System.out.print("("); matrix_chain_print(s,i,s[i][j]); matrix_chain_print(s,s[i][j]+1,j); System.out.print(")"); } } }
利用上面的代码,现在对书中的例子和15.2-1练习题给出运行结果。
书中例子的运行结果:
((A0(A1A2))((A3A4)A5))
习题15.2-1的运行结果:
((A0A1)((A2A3)(A4A5)))
相关文章推荐
- 算法导论 15.2 矩阵链乘法
- 算法导论15.2矩阵链乘法 练习总结
- 《算法导论》笔记 第15章 15.2 矩阵链乘法
- 算法导论第十五章15.2矩阵链乘法(使矩阵所需标题乘法的次数最少)c++
- 算法导论15.2节 矩阵链乘法
- 算法导论-矩阵链乘法
- 算法导论 矩阵链乘法
- 算法导论--动态规划(矩阵链乘法)
- CLRS 15.2矩阵链乘法
- 算法导论-第15章-动态规划:矩阵链乘法C++实现
- 算法导论第15章 动态规划-矩阵链乘法
- 算法导论十五章--矩阵链乘法
- 15.2 矩阵链乘法
- 算法导论:第15章 动态规划_2矩阵链乘法
- 算法导论 动态规划 矩阵链乘法
- 《算法导论》读书笔记之动态规划—矩阵链乘法
- 矩阵链乘法问题
- 算法导论第15章习题15.3-3最大矩阵链乘法
- 矩阵链乘--动态规划15.2
- 矩阵链乘法