BFS的复杂性据说是线性的,即O(V + E),但有向完整图中的边的总数是V *(V-1),它是2的函数大小图表。那么BFS会花费O(V ^ 2)时间遍历完整的图形吗?
答案 0 :(得分:1)
BFS在O(V + E)
时间运行,前提是图表由邻接列表结构表示。
在密集的情况下,您会看到答案为O(V+E)
。 (代表是邻接名单)。
如果是邻接矩阵O(V^2)
。
无论图表如何,您将始终首先覆盖起点的邻居。然后对邻居重复这个。所以你可以看到它总是必须在O(V+E)
时间遍历,但它是表示邻接矩阵很难的表示。所以它将是O(V^2)
1 。
1 这是因为每当我们想要找到与给定顶点'u'相邻的边时,我们遍历整个数组adjmatrix[u]
,这是长度| V |
答案 1 :(得分:1)
是的,我猜你已经做过数学了。
O(V+E) = O(V + V*(V-1))
= O(V + V*V - V)
= O(V*V)