基于邻接矩阵实现图的广度优先遍历
时间: 2024-01-08 15:46:33 浏览: 61
图的广度优先遍历(BFS)可以用邻接矩阵来实现。下面是基于邻接矩阵实现图的广度优先遍历的示例代码:
```python
from queue import Queue
# 定义邻接矩阵表示图
graph = [
[0, 1, 1, 0, 0],
[1, 0, 0, 1, 1],
[1, 0, 0, 1, 0],
[0, 1, 1, 0, 1],
[0, 1, 0, 1, 0]
]
# 定义图的顶点数
n = len(graph)
# 定义数组记录每个顶点是否已经被访问
visited = [False] * n
# 定义队列存储待访问的顶点
q = Queue()
# 从顶点0开始广度优先遍历
q.put(0)
visited[0] = True
while not q.empty():
v = q.get()
print(v, end=' ')
for i in range(n):
if graph[v][i] and not visited[i]:
q.put(i)
visited[i] = True
```
在这个示例代码中,我们定义了一个邻接矩阵 `graph` 表示图。每行表示一个顶点,每列表示该顶点到其他顶点是否有边相连。如果 `graph[i][j]` 的值为1,则表示顶点 i 和顶点 j 之间有一条边,否则没有。
然后,我们定义了一个布尔型数组 `visited`,用于记录每个顶点是否已经被访问过。我们也定义了一个队列 `q`,用于存储待访问的顶点。
最后,我们从顶点0开始进行广度优先遍历。首先将顶点0加入队列中,并将其标记为已访问。然后,我们循环遍历队列中的顶点,对于每个顶点,我们依次遍历与它相邻的所有顶点。如果某个相邻顶点还没有被访问过,就将它加入队列中,并标记为已访问。
这样,我们就可以用邻接矩阵来实现图的广度优先遍历了。
阅读全文