算法之矩阵链乘法问题
2008-10-23 16:27
344 查看
package com.eshore.sweetop.dynamicprogramming;
public class MatrixChain {
public static void order(int[] p) {
int n = p.length - 1;
int[][] m = new int
;
int[][] s = new int
;
for (int i = 0; i < n; i++) {
m[i][i] = 0;
}
for (int l = 2; l < n + 1; l++) {
for (int i = 0; i < n - l + 1; i++) {
int j = i + l - 1;
m[i][j] = Integer.MAX_VALUE;
for (int k = i; k < j; k++) {
int q = m[i][k] + m[k + 1][j] + p[i] * p[k + 1] * p[j + 1];
if (q < m[i][j]) {
m[i][j] = q;
s[i][j] = k;
}
}
}
}
Matrix.halfdisplay(m);
parens(s,0,s.length-1);
}
public static void parens(int[][] s, int i, int j) {
if (i == j) {
System.out.print("A" + (i + 1));
} else {
System.out.print("(");
parens(s,i,s[i][j]);
parens(s,s[i][j]+1,j);
System.out.print(")");
}
}
public static void main(String[] args) {
// int[] p = { 30, 35, 15, 5, 10, 20, 25 };
int[] p = {5,10,3,12,5,50,6};
MatrixChain.order(p);
}
}
public class MatrixChain {
public static void order(int[] p) {
int n = p.length - 1;
int[][] m = new int
;
int[][] s = new int
;
for (int i = 0; i < n; i++) {
m[i][i] = 0;
}
for (int l = 2; l < n + 1; l++) {
for (int i = 0; i < n - l + 1; i++) {
int j = i + l - 1;
m[i][j] = Integer.MAX_VALUE;
for (int k = i; k < j; k++) {
int q = m[i][k] + m[k + 1][j] + p[i] * p[k + 1] * p[j + 1];
if (q < m[i][j]) {
m[i][j] = q;
s[i][j] = k;
}
}
}
}
Matrix.halfdisplay(m);
parens(s,0,s.length-1);
}
public static void parens(int[][] s, int i, int j) {
if (i == j) {
System.out.print("A" + (i + 1));
} else {
System.out.print("(");
parens(s,i,s[i][j]);
parens(s,s[i][j]+1,j);
System.out.print(")");
}
}
public static void main(String[] args) {
// int[] p = { 30, 35, 15, 5, 10, 20, 25 };
int[] p = {5,10,3,12,5,50,6};
MatrixChain.order(p);
}
}
相关文章推荐
- 【算法】卡特兰数问题(BST排列个数,矩阵乘法,算数加括号,排队等)
- 51NOD 1836 战忽局的手段(矩阵乘法加速+__float128精度问题+概率期望)——算法马拉松20(告别美国大选及卡斯特罗)
- 程序算法艺术与实践:递归策略之矩阵乘法问题
- 算法导论15章 动态规划之矩阵链乘法问题
- 算法提高 矩阵乘法
- 矩阵的乘法问题
- 【算法】_015_矩阵乘法_直接递归
- 转自matrix67 十个利用矩阵乘法解决的经典问题
- 矩阵的乘法算法
- 算法-蓝桥杯-算法训练 矩阵乘法 (JAVA)
- Strassen算法之矩阵乘法
- 【算法】矩阵走法问题
- 算法训练 矩阵乘法
- 【蓝桥】算法提高 矩阵乘法
- Java企业面试算法新得体会之8数组和矩阵问题6问
- hihoCoder #1143 : 骨牌覆盖问题·一(矩阵乘法)
- 算法训练 矩阵乘法
- 算法题:矩阵链乘问题
- 一个基础而奇怪的问题:算法运行加法、乘法、除法性能无差别?
- 纯C语言矩阵乘法的Strassen算法,包含非2次幂的情况