算法实现求无向连通图的连通分量数
时间: 2023-06-22 21:38:36 浏览: 87
可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来求无向连通图的连通分量数。
以下是使用DFS实现的代码:
```python
def dfs(node, visited, graph):
visited[node] = True
for neighbor in graph[node]:
if not visited[neighbor]:
dfs(neighbor, visited, graph)
def count_connected_components(n, edges):
graph = [[] for _ in range(n)]
for a, b in edges:
graph[a].append(b)
graph[b].append(a)
visited = [False] * n
count = 0
for i in range(n):
if not visited[i]:
dfs(i, visited, graph)
count += 1
return count
```
其中,n是节点数,edges是边列表,每个元素是一个二元组表示一条边连接的两个节点。
在程序中,我们首先将边列表转换成邻接表表示的无向图。然后,我们遍历所有节点,对于每个未被访问过的节点,我们都进行一次深度优先搜索,并将搜索到的所有节点标记为已访问。每次进行一次深度优先搜索,就意味着我们发现了一个新的连通分量,最终返回连通分量的数量即可。
阅读全文