24.3 Dijkstra算法
# 说明
# 代码
import heapq
def dijkstra(graph, start):
distances = {node: float('inf') for node in graph}
distances[start] = 0
queue = [(0, start)]
while queue:
current_distance, current_node = heapq.heappop(queue)
if distances[current_node] < current_distance:
continue
for neighbor, weight in graph[current_node].items():
distance = current_distance + weight
if distance < distances[neighbor]:
distances[neighbor] = distance
heapq.heappush(queue, (distance, neighbor))
return distances
graph = { #图
's':{'t':10,'y':5},
't':{'y':2,'x':1},
'y':{'t':3,'x':9,'z':2},
'x':{'z':4},
'z':{'s':7,'x':6}
}
print(dijkstra(graph, 's')) # 输出: {'A': 0, 'B': 1, 'C': 3, 'D': 4}
上次更新: 2025/03/22, 03:52:10