生成迪杰斯特拉算法求两点之间的最短距离
时间: 2023-05-14 15:05:28 浏览: 148
求最短路径的迪杰斯特拉算法
4星 · 用户满意度95%
可以使用以下代码实现:
```python
import heapq
def dijkstra(graph, start, end):
heap = [(0, start)]
visited = set()
while heap:
(cost, node) = heapq.heappop(heap)
if node not in visited:
visited.add(node)
if node == end:
return cost
for neighbor, c in graph[node].items():
if neighbor not in visited:
heapq.heappush(heap, (cost + c, neighbor))
return -1
# 示例
graph = {
'A': {'B': 2, 'C': 1},
'B': {'A': 2, 'D': 5},
'C': {'A': 1, 'D': 1},
'D': {'B': 5, 'C': 1}
}
start = 'A'
end = 'D'
print(dijkstra(graph, start, end)) # 输出 2+1=3
```
这段代码实现了迪杰斯特拉算法,用于求解给定图中两点之间的最短距离。其中,`graph` 是一个字典,表示图的邻接表;`start` 和 `end` 分别是起点和终点。算法的核心是使用堆来维护当前可达的节点,并按照距离从小到大排序,以便快速找到下一个最优节点。
阅读全文