在图论中,广度优先遍历(Breadth-First Search, BFS) 是一种用于遍历或搜索树或图的方法。它的特点是逐层访问节点,在访问完所有相邻节点后才会访问下一层的节点。在有向图中应用BFS时,通过设定起始节点开始逐步探索与之相连的所有节点,并在这些节点被处理后继续探索它们的邻接节点。
初始化:
遍历过程:
终止条件:
from collections import deque
def bfs(graph, start):
visited = set()
queue = deque([start])
while queue:
vertex = queue.popleft()
if vertex not in visited:
print(vertex)
visited.add(vertex)
for neighbour in graph[vertex]:
if neighbour not in visited:
queue.append(neighbour)
# 示例图的表示
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []
}
bfs(graph, 'A')
广度优先遍历算法是一种强大的图搜索方法,在有向图的应用中尤其重要。通过合理设置起始点和队列管理,能够高效地进行大规模图的探索工作,并且为后续路径优化提供了基础。