1. 程式人生 > >矩陣乘法最優序列問題

矩陣乘法最優序列問題

該問題是給定一系列矩陣求一個最少乘法次數。 這是一個動態規劃問題,狀態轉移方程

long thisCost = m[left][i] + m[i+1][right]+c[left-1]*c[i]*c[right];

進行求解

	/**
	 * 
	 * @param c[0]為1矩陣行數 c 所有矩陣列數
	 * @param m[i][k] 從i乘到j需要執行乘法最少次數
	 * @param lastChang 最後一次改變的i值
	 */
public static void optMatrix(int c[], long m[][],int lastChang[][]) {
		int n =
c.length - 1; for(int left = 1; left <= n; left++) m[left][left] = 0; for(int k = 1; k<n;k++) { for(int left = 1; left<=n-k;left++) { int right = left + k; m[left][right] = Integer.MAX_VALUE; for(int i = left; i < right; i++) { long thisCost = m[left][i] + m[i+
1][right]+c[left-1]*c[i]*c[right]; if(thisCost < m[left][right]) { m[left][right] = thisCost; lastChang[left][right] = i; } } } } }