📅  最后修改于: 2023-12-03 15:39:54.625000             🧑  作者: Mango
以下是 UGC NET CS 2015 年六月 – II 的问题 15:
The time complexity of the problem of counting the number of connected components in an undirected graph on n vertices and m edges is
(A) O(n)
(B) O(m)
(C) Θ(n2)
(D) Θ(m)
该问题要求计算一个具有n个顶点和m条边的无向图中联通分量的数量。
联通性是一个图的性质,表示所有顶点都可以通过边相互到达。因此,这个问题涉及到图的遍历和查找联通区域。
根据算法理论,网络的遍历和查找通常使用深度优先搜索(DFS)和广度优先搜索(BFS)算法。这两种算法的时间复杂度均为O(N+M)。因此,该问题的答案应该是O(N+M)。
答案:(A)
def countConnectedComponents(n, edges):
visited = [False] * (n + 1)
count = 0
def dfs(node):
visited[node] = True
for neighbor in edges[node]:
if not visited[neighbor]:
dfs(neighbor)
for i in range(1, n + 1):
if not visited[i]:
count += 1
dfs(i)
return count
这个函数实现了一个计算无向图中联通分量数量的算法。它使用DFS算法遍历图,并在每次遍历到一个新的联通分量时增加计数器。算法的时间复杂度为O(N+M)。