为我写一个基于邻接矩阵的广度优先搜索
时间: 2023-04-07 19:03:58 浏览: 97
好的,以下是基于邻接矩阵的广度优先搜索的 Python 代码:
```python
from collections import deque
def bfs(adj_matrix, start):
n = len(adj_matrix)
visited = [False] * n
queue = deque([start])
visited[start] = True
while queue:
node = queue.popleft()
print(node, end=' ')
for neighbor in range(n):
if adj_matrix[node][neighbor] and not visited[neighbor]:
queue.append(neighbor)
visited[neighbor] = True
```
其中 `adj_matrix` 是邻接矩阵,`start` 是起始节点的索引。我们首先初始化一个长度为 n 的布尔数组 `visited`,表示每个节点是否被访问过,初始时全部设为 False。然后将起始节点加入队列中,并将其标记为已访问。
接下来进行循环,从队列中弹出一个节点 `node`,将其打印出来。然后遍历 `node` 的所有邻居,如果邻居未被访问过且与 `node` 有边相连,则将邻居加入队列中,并将其标记为已访问。
循环直到队列为空,遍历结束。
阅读全文