使用python实现dijsktra
时间: 2024-01-01 08:04:51 浏览: 68
好的,下面是使用Python实现Dijkstra算法的代码:
```python
import heapq
def dijkstra(graph, start):
distances = {node: float('inf') for node in graph} # 初始化距离为无穷大
distances[start] = 0 # 起点距离为0
queue = [(0, start)] # 构建堆
while queue:
(cost, node) = heapq.heappop(queue) # 弹出堆顶元素
if cost > distances[node]: # 如果弹出的节点已经被处理,直接跳过
continue
for neighbor, weight in graph[node].items(): # 遍历所有相邻节点
new_cost = distances[node] + weight
if new_cost < distances[neighbor]: # 如果发现更短路径,更新距离
distances[neighbor] = new_cost
heapq.heappush(queue, (new_cost, neighbor)) # 将新节点加入堆中
return distances
```
其中 `graph` 是图的邻接表表示,`start` 是起点。算法的时间复杂度为 $O(E \log V)$,其中 $E$ 是边数,$V$ 是顶点数。
阅读全文