用python语言编程利用广度优先搜索算法确定无向图的连通分量
时间: 2023-06-14 07:06:33 浏览: 85
广度优先搜索算法判断图的连通性.doc
下面是用Python语言编写的广度优先搜索算法确定无向图的连通分量的示例代码:
```python
from collections import deque
def bfs(graph, start, visited):
queue = deque([start])
visited.add(start)
while queue:
vertex = queue.popleft()
for neighbor in graph[vertex]:
if neighbor not in visited:
visited.add(neighbor)
queue.append(neighbor)
def connected_components(graph):
visited = set()
components = []
for vertex in graph:
if vertex not in visited:
component = set()
bfs(graph, vertex, component)
components.append(component)
visited.update(component)
return components
# 示例代码的使用方法
graph = {
'A': ['B', 'C'],
'B': ['A', 'C'],
'C': ['A', 'B', 'D'],
'D': ['C']
}
components = connected_components(graph)
print(components)
```
在示例代码中,`bfs` 函数实现了广度优先搜索算法,`connected_components` 函数利用 `bfs` 函数确定了无向图的连通分量。示例代码中的无向图是一个字典,其中字典的键表示图中的顶点,字典的值是一个列表,表示该顶点的邻居。程序输出的结果是一个列表,列表的每个元素表示一个连通分量,其中包含的元素是该连通分量中的所有顶点。
阅读全文