dijkstra算法伪代码 python
时间: 2024-04-06 14:27:44 浏览: 199
Dijkstra算法是一种用于解决单源最短路径问题的经典算法。下面是Dijkstra算法的伪代码实现(使用Python语言):
```
1. 初始化:
- 创建一个空的集合visited,用于存储已经找到最短路径的节点
- 创建一个字典distances,用于存储每个节点到起始节点的最短距离,初始值为无穷大
- 将起始节点的最短距离设置为0
2. 循环直到找到所有节点的最短路径:
- 从未访问的节点中选择一个距离起始节点最近的节点,将其标记为当前节点
- 将当前节点添加到visited集合中
- 对于当前节点的每个邻居节点:
- 计算从起始节点经过当前节点到达邻居节点的距离
- 如果该距离小于邻居节点当前的最短距离,则更新邻居节点的最短距离
- 如果所有邻居节点都已经更新了最短距离,则将当前节点标记为已访问
3. 返回distances字典,其中存储了每个节点到起始节点的最短距离
以下是使用伪代码实现的Dijkstra算法的Python代码:
def dijkstra(graph, start):
visited = set()
distances = {node: float('inf') for node in graph}
distances[start] = 0
while len(visited) < len(graph):
current_node = min(
(node for node in graph if node not in visited),
key=lambda node: distances[node]
)
visited.add(current_node)
for neighbor, weight in graph[current_node].items():
distance = distances[current_node] + weight
if distance < distances[neighbor]:
distances[neighbor] = distance
return distances
```
阅读全文