有向图BFS遍历邻接矩阵代码
时间: 2024-12-10 10:17:30 浏览: 9
有向图的广度优先搜索(Breadth-First Search, BFS)通常用于查找最短路径,其基本思想是从起始节点开始逐层探索邻居节点。在邻接矩阵表示法中,由于矩阵可以直接通过索引访问相邻节点,所以遍历过程会相对简单。
以下是一个Python示例,使用邻接矩阵来实现有向图的BFS:
```python
def bfs(matrix, start):
visited = [False] * len(matrix)
queue = [start]
visited[start] = True
while queue:
vertex = queue.pop(0) # 取出队首节点
print(vertex, end=" ") # 打印当前节点
for neighbor in range(len(matrix[vertex])):
if not visited[neighbor] and matrix[vertex][neighbor]: # 如果邻居未访问并且有边相连
visited[neighbor] = True
queue.append(neighbor)
# 假设matrix是一个二维列表,其中matrix[i][j]为从i到j是否有边
bfs(matrix, 0) # 从0节点开始遍历
```
在这个例子中,我们初始化一个visited数组来标记已访问过的节点,并将起始节点加入队列。然后在while循环中,每次取出队列中的一个节点并访问它,接着检查它的所有未访问过且有边相连的邻居,将其添加到队列和visited数组中。
阅读全文