python采用Dijkstra算法求解从源点A到相应顶点的最短路径
时间: 2023-12-02 07:02:22 浏览: 87
在Python中,可以使用Dijkstra算法来求解从源点A到其他顶点的最短路径。下面是一个示例代码:
```python
import sys
def dijkstra(graph, start):
# 初始化距离字典和已访问顶点集合
distances = {vertex: sys.maxsize for vertex in graph}
distances[start] = 0
visited = set()
while len(visited) != len(graph):
# 选择当前距离最小的顶点
current_vertex = min((distances[vertex], vertex) for vertex in graph if vertex not in visited)[1]
visited.add(current_vertex)
# 更新当前顶点的邻居顶点的距离
for neighbor, weight in graph[current_vertex].items():
new_distance = distances[current_vertex] + weight
if new_distance < distances[neighbor]:
distances[neighbor] = new_distance
return distances
# 示例图的邻接表表示
graph = {
'A': {'B': 2, 'C': 4},
'B': {'A': 2, 'C': 1, 'D': 3},
'C': {'A': 4, 'B': 1, 'D': 2},
'D': {'B': 3, 'C': 2}
}
start_vertex = 'A'
shortest_distances = dijkstra(graph, start_vertex)
print(f"从顶点 {start_vertex} 到其他顶点的最短路径为:{shortest_distances}")
```
在这个示例中,我们使用了一个邻接表来表示图,并且使用了sys库中的maxsize来表示无穷大。dijkstra函数实现了Dijkstra算法,它通过迭代选择当前距离最小的顶点,并更新其邻居顶点的距离。最后,我们将从源点A到其他顶点的最短路径输出到控制台。
注意:该示例只适用于有向图,如果是无向图,需要在构建邻接表时同时添加反向边。
阅读全文
相关推荐

















