python 迪杰斯特拉
时间: 2023-08-15 22:13:54 浏览: 97
python实现狄克斯特拉算法
迪杰斯特拉(Dijkstra)算法是一种用于解决图中单源最短路径问题的算法。在Python中,你可以使用以下代码实现迪杰斯特拉算法:
```python
import sys
def dijkstra(graph, start):
distance = {node: sys.maxsize for node in graph} # 初始化距离字典
distance[start] = 0 # 设置起始点的距离为0
visited = set() # 记录已访问的节点集合
while len(visited) < len(graph):
# 找到当前未访问节点中距离最小的节点
min_distance = sys.maxsize
min_node = None
for node in graph:
if node not in visited and distance[node] < min_distance:
min_distance = distance[node]
min_node = node
visited.add(min_node) # 将该节点标记为已访问
# 更新与该节点相邻节点的距离
for neighbor, weight in graph[min_node].items():
new_distance = distance[min_node] + weight
if new_distance < distance[neighbor]:
distance[neighbor] = new_distance
return distance
# 示例图
graph = {
'A': {'B': 5, 'C': 1},
'B': {'A': 5, 'C': 2, 'D': 1},
'C': {'A': 1, 'B': 2, 'D': 4, 'E': 8},
'D': {'B': 1, 'C': 4, 'E': 3, 'F': 6},
'E': {'C': 8, 'D': 3},
'F': {'D': 6}
}
start_node = 'A'
distances = dijkstra(graph, start_node)
print(distances)
```
这段代码实现了迪杰斯特拉算法,并计算了从起始节点到其他节点的最短距离。你可以根据自己的需求修改图的结构和起始节点。
阅读全文