我必须计算这种算法的成本。
我在考虑指数成本。我尝试了递归关系。 4*T(n/4) + c*n
,最后是((4^n) - 1)/3
。
对吗?还有其他计算方法吗?
int m(int a[][]) {
return m1(a, 0, a.length-1, 0, a[0].length-1);
}
int m1(int a[][], int l1, int l2, int c1, int c2) {
if(c1 > c2 || l1 > l2) return 0;
if(c1 == c2 && l1 == l2) return a[l1][c1];
int c = (c1+c2)/2,
l = (l1+l2)/2;
return m1(a, l1, l, c1, c) +
m1(a, l1, l, c+1, c2) +
m1(a, l+1, l2,c1, c) +
m1(a, l+1, l2, c+1, c2);
}
答案 0 :(得分:0)
据我所知:在每个阶段,我们将问题空间分为四个部分。为了合并子问题的结果,我们将四个整数相加,此操作在恒定时间 O(1)
内发生。
假设n
是问题中矩阵a
的高度,m
是问题中矩阵a
的宽度
我们可以将复杂性可视化为具有 n x m
叶节点和高度 log4(nm)
的 4-nary 树。 .树中的节点总数为O(nm)
,因此复杂度为O(nm)
。
如果没有并行性,这种递归算法应该不会比矩阵上的顺序算法快。