問題描述:
給定n個矩陣構成乙個鏈其中i = 1,2,3,...,n矩陣ai的緯數字pi-1 * pi,對乘積a1,a2,... ,an以一種最小化標量乘法次數的方式進行加全部括號。
**:《juzhen.h》
#pragma once
#include"stdafx.h"
#define maxvalue 1000000
#define n 6
void matrix_chain_order(int *p, int len, int m[n + 1][n + 1], int s[n + 1][n + 1])
}} }
}//s中存放著括號當前的位置
void print_optimal_parents(int s[n + 1][n + 1], int i, int j)
}
《main.cpp》
#include "stdafx.h"
#include"juzhen_list.h"
int main()
; int m[n + 1][n + 1] = ;
int s[n + 1][n + 1] = ;
int i, j;
matrix_chain_order(p, n + 1, m, s);
cout << "m value is: " << endl;
for (i = 1; i <= n; ++i)
cout << "s value is: " << endl;
for (i = 1; i <= n; ++i)
cout << "the result is:" << endl;
print_optimal_parents(s, 1, n);
return 0;
}
演示結果:
動態規劃 矩陣鏈乘法
矩陣鏈乘法問題 給定n個矩陣的鏈,矩陣ai的規模為p i 1 p i 求完全括號化方案,使得計算乘積a1a2 an所需標量乘法次數最少。m i j 表示矩陣鏈ai j所需標量乘法次數的最小值。m i j 0 i j m i j m i k m k 1 j p i 1 p k p j i k s 1....
動態規劃 矩陣鏈乘法
兩個矩陣相乘的計算量,對於一般的矩陣乘法來說,如矩陣a m,n 與矩陣b n,p 相乘需要進行的加法次數為m n p次乘法 由於矩陣乘法滿足結合律,因此矩陣相乘的結合性,會影響整個計算表示式的乘法執行次數 如下面的例子,a b c三個矩陣相乘,其中a 10,5 b 5,20 c 20,3 1 ab ...
動態規劃 矩陣鏈乘法
def matrix multipy a,b 乘法得到的是乙個 a.rows,b.cols 的矩陣,相當於a.rows個向量的b.cols次的向量線性加權 ifnot a.shape 1 b.shape 0 a組中向量的維度與b組中向量的維度一致 print error else 將每乙個元素都初始...