利用广度优先搜索编程实现确定无向图的连通分量Python编写
时间: 2024-01-20 18:10:42 浏览: 68
好的,以下是利用广度优先搜索(BFS)编程实现确定无向图的连通分量的Python代码:
```python
from collections import deque
def bfs(graph, start, visited):
# 使用队列来进行BFS
queue = deque([start])
# 标记起点为已访问
visited[start] = True
while queue:
# 取出队列中的第一个节点
node = queue.popleft()
# 遍历该节点的所有邻居节点
for neighbor in graph[node]:
# 如果该邻居节点没有被访问过,则加入队列并标记为已访问
if not visited[neighbor]:
queue.append(neighbor)
visited[neighbor] = True
def find_connected_components(graph):
# 初始化所有节点均未被访问过
visited = { node: False for node in graph }
# 记录连通分量的数量
count = 0
for node in graph:
# 如果该节点还没有被访问过,则进行BFS,并将连通分量数量加1
if not visited[node]:
bfs(graph, node, visited)
count += 1
return count
```
其中,`graph` 是一个字典,表示无向图的邻接表。例如,如果无向图有三个节点,分别为 0、1、2,边的关系为 (0, 1) 和 (1, 2),那么对应的邻接表为:
```python
graph = {
0: [1],
1: [0, 2],
2: [1]
}
```
调用 `find_connected_components(graph)` 函数即可求出无向图的连通分量数量。
阅读全文