我必须计算搜索矩形矩阵中元素的算法的复杂性。它使用分而治之。对于方阵,我的时间函数变为* T(n / b)+ O(n ^ 2)。但是对于矩形矩阵,如果必须将其分成4个子矩阵,我不知道如何表示除法。它是* T(m * n / 4)+ O(n)?
答案 0 :(得分:0)
您没有描述算法,因此无法准确回答问题。但我会尝试假设算法如下:
m = 1
或n = 1
则在O(m * n)
时间处理矩阵。m > 1
和n > 1
)将矩阵划分为四个大小不超过[m / 2]x[n / 2]
的矩阵,其中[y]
是一个不小于y
的最小整数}。O(m * n)
时间。在这种情况下,时间复杂度的递归方程将是
让我们解决它
T(m, n) = O(m * n) +
4 * O([m / 2] * [n / 2]) +
4 ^ 2 * O([m / 4] * [n / 4]) +
... +
4 ^ L * O([m / 2 ^ L] * [n / 2 ^ L]), where L = [log(min(m, n))]
T(m, n) = O(m * n + ... + 4 ^ L * [m / 2 ^ L] * [n / 2 ^ L]) =
= O(m * n + ... + 2 ^ L * [m / 2 ^ L] * 2 ^ L * [n / 2 ^ L] =
= O(m * n + ... + m * n (L times)) =
= O(L * m * n) = O(m * n * [log(min(m, n))])
所以问题的答案是
T(m,n)= O(m * n * [log(min(m,n))]),其中log
代表二进制对数,[y]
代表{{ 1}}功能。