填充MxN矩阵的某些部分的时间复杂度

时间:2015-12-12 10:34:56

标签: algorithm matrix time-complexity complexity-theory

我不擅长计算算法的复杂性。填充M×N矩阵的时间复杂度是O(MN)。是的,我理解,因为NxM是细胞填充的数量。我知道我们可以计算最佳案例,平均案例和最坏情况。

例如这个4x4矩阵。我们只填充对角线(D)和一个对角线上侧dan下侧主对角线(x)。我知道复杂度是O(3M-2)因此我们有3.4-2 = 10。

|D  x        |
|x  D   x    |
|   x   D   x|
|       x   D|

但我无法详细解释如何获得3M-2。我只是通过反复试验来运用我的想象力。如果N = M,这是我最好的情况。对于最坏的情况,我们必须填充第一主对角线(D1),第二主对角线(D2),D1和D2(D)之间的单元以及一个单元上侧和下侧主对角线(x)。我所知,复杂度为O(2 * M +(M-N-1) N + 2 (N-1))

其中M = 9(max [row,col])且N = 6(min [row,col])。请参阅下面的示例

|D1 D   D   D2  x                 |
|x  D1  D   D   D2  x             |
|   x   D1  D   D   D2  x         |
|       x   D1  D   D   D2  x     |
|           x   D1  D   D   D2  x |
|               x   D1  D   D   D2|

填充区域= 2 * 9 +(9-6-1) 6 + 2 (6-1)= 34。

2 * M代表D1和D2。

(M-N-1)* N表示D.

2 *(N-1)代表x

但我不知道如何以数学方式写这个。我的意思是如何在结构上进行描述?我只想计算填充矩阵某些部分的复杂性。感谢。

1 个答案:

答案 0 :(得分:0)

在每个'完整'对角线中,你有N个元素。 有M-N + 1个完整对角线,因为从(1,1)开始的对角线以(N,N)结束,但最后一行在最后一行有M个元素。

您想要添加上下对角线,每个对角线都有(N-1)个元素。因此,您的复杂性是:

O(N(M-N+1) + 2(N-1)) = O(NM - NN + N + 2N - 2) = O(NM-NN+3N) = O(N(M-N+3))