【发布时间】: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