📌  相关文章
📜  教资会网络 | UGC NET CS 2015 年六月 – II |问题 15(1)

📅  最后修改于: 2023-12-03 15:39:54.625000             🧑  作者: Mango

教资会网络 | UGC NET CS 2015 年六月 – II |问题 15

问题描述

以下是 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)。