任何人都可以解释如何在矩阵链乘法后打印矩阵的顺序?

时间:2018-03-09 12:11:03

标签: matrix multiplication chain

我必须找到矩阵链乘法后形成的矩阵的阶数。 我有以下代码来确定乘以所有矩阵所需的最小乘法次数:



ll MatrixChainOrder(ll p[], ll n) {
	ll m[n][n], i, j, k, L, q;
	for(i = 1; i < n; i++) {
		m[i][i] = 0;
	}
	for(L = 2; L < n; L++) {
		for(i = 1; i < n - L + 1; i++) {
			j = i + L - 1;
			m[i][j] = INT_MAX;
			for(k = i; k <= j - 1; k++) {
				q = m[i][k] + m[k+1][j] + p[i-1] * p[k] * p[j];
				if (q < m[i][j]) {
					m[i][j] = q;
				}
			}
		}
	}
	return m[1][n-1];
}
&#13;
&#13;
&#13;

如何打印矩阵的顺序?谁能解释一下?

1 个答案:

答案 0 :(得分:0)

您需要使用另一个辅助矩阵(例如s)和索引。

if (q < m[i][j]) {
    m[i][j] = q;
    s[i][j] = k;
}

使用矩阵ms,您可以递归打印最佳矩阵括号。

PRINT-OPTIMAL-PARENS