【发布时间】:2015-04-03 12:53:09
【问题描述】:
我想知道是否有任何方法可以将矩阵乘法问题的动态规划解决方案的空间复杂度从 O(N^2) 提高到更好的水平?
【问题讨论】:
-
我主要关心这个问题的动态规划解决方案中的空间复杂度
标签: dynamic-programming matrix-multiplication space-complexity
我想知道是否有任何方法可以将矩阵乘法问题的动态规划解决方案的空间复杂度从 O(N^2) 提高到更好的水平?
【问题讨论】:
标签: dynamic-programming matrix-multiplication space-complexity
这是一个空间复杂度为 O(n) 的解决方案
#include <iostream>
using namespace std;
int min_cost(int a[], int n) {
int* b = new int(n);
b[1] = 0;
b[2] = a[0]*a[1]*a[2];
for (int j = 3; j < n; j++) {
b[j] = min( b[j-1] + a[0]*a[j-1]*a[j], b[j-2] + a[j-1]*a[j-2]*a[j] + a[0]*a[j-2]*a[j]);
}
return b[n-1];
}
int main() {
int arr[] = {10, 20, 30};
int size = sizeof(arr)/sizeof(arr[0]);
printf("Minimum number of multiplications is %d ", min_cost(arr, size));
return 0;
}
【讨论】: