基于邻接矩阵的广度优先搜索遍历
时间: 2023-12-10 17:04:04 浏览: 138
邻接矩阵广度优先遍历.cpp
以下是基于邻接矩阵的广度优先搜索遍历的Python实现:
```python
from queue import Queue
def bfs(graph, start):
"""
:param graph: 邻接矩阵表示的图
:param start: 起始节点
:return: 从起始节点开始的遍历序列
"""
n = len(graph)
visited = [False] * n # 记录每个节点是否被访问过
q = Queue()
q.put(start)
visited[start] = True
res = []
while not q.empty():
cur = q.get()
res.append(cur)
for i in range(n):
if graph[cur][i] == 1 and not visited[i]:
q.put(i)
visited[i] = True
return res
```
其中,`graph`是邻接矩阵表示的图,`start`是起始节点。我们使用一个队列`q`来存储待访问的节点,使用一个布尔型数组`visited`来记录每个节点是否被访问过。首先将起始节点加入队列,并将其标记为已访问。然后,每次从队列中取出一个节点`cur`,将其加入遍历序列`res`中,并将其未访问的邻居节点加入队列中。最终返回遍历序列`res`即可。
阅读全文