【问题标题】:Time complexity to fill some part of MxN matrix填充 MxN 矩阵的某些部分的时间复杂度
【发布时间】:2016-03-18 06:27:57
【问题描述】:

我不擅长计算算法的复杂度。填充 MxN 矩阵的时间复杂度为 O(MN)。是的,我明白,因为 NxM 是单元格被填充的数量。我知道我们可以计算最佳情况、平均情况和最坏情况。

例如这个 4x4 矩阵。我们只填充对角线 (D) 和一个对角线上端和下端主对角线 (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

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

【问题讨论】:

    标签: algorithm matrix time-complexity complexity-theory


    【解决方案1】:

    在每个“完整”对角线中,您有 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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-21
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 2012-01-22
      相关资源
      最近更新 更多