单源最短路径BFS算法
时间: 2023-12-14 16:34:28 浏览: 146
算法分析-最短路径算法 MapX
单源最短路径问题是指在一个加权图中,从给定源点到所有其他顶点的最短路径问题。BFS算法可以用于解决无权图的单源最短路径问题。以下是BFS算法求解无权图单源最短路径的步骤:
1. 创建一个队列,将起始节点入队。
2. 创建一个visited集合,将起始节点加入visited集合。
3. 创建一个distance字典,将起始节点的距离设为0。
4. 当队列不为空时,执行以下步骤:
1. 从队列中取出一个节点。
2. 遍历该节点的所有邻居节点,如果邻居节点未被访问过,则将其加入visited集合,并将其距离设为当前节点距离加1。
3. 将邻居节点加入队列中。
5. 遍历完所有节点后,distance字典中存储的就是起始节点到其他节点的最短距离。
以下是BFS算法求解无权图单源最短路径的Python代码实现:
```python
from collections import deque
def bfs_shortest_path(graph, start):
queue = deque([start])
visited = set([start])
distance = {start: 0}
while queue:
node = queue.popleft()
for neighbor in graph[node]:
if neighbor not in visited:
visited.add(neighbor)
distance[neighbor] = distance[node] + 1
queue.append(neighbor)
return distance
```
其中,graph是一个字典,表示无权图的邻接表。start是起始节点。
阅读全文