An implementation of dijkstra made by GPTo3-mini-high

This commit is contained in:
2025-02-04 20:00:57 +01:00
parent c630b302d5
commit 1ee0474192

View File

@@ -0,0 +1,55 @@
# Chatgpt code
import heapq
def dijkstra(graph, source):
distances = {node: float('inf') for node in graph}
distances[source] = 0
previous = {node: None for node in graph}
queue = [(0, source)]
while queue:
current_distance, current_node = heapq.heappop(queue)
if current_distance > distances[current_node]:
continue
for neighbor, weight in graph[current_node]:
distance = current_distance + weight
if distance < distances[neighbor]:
distances[neighbor] = distance
previous[neighbor] = current_node
heapq.heappush(queue, (distance, neighbor))
return distances, previous
def reconstruct_path(previous, start, end):
path = []
node = end
while node is not None:
path.append(node)
node = previous[node]
path.reverse()
return path
if __name__ == '__main__':
graph = {
"R1": [("R2", 1)],
"R2": [("R3", 1), ("R5", 10)],
"R3": [("R4", 1), ("R5", 1)],
"R5": [("R4", 10)],
"R4": []
}
source = "R1"
destination = "R4"
distances, previous = dijkstra(graph, source)
print("Shortest distances from", source, ":", distances)
path = reconstruct_path(previous, source, destination)
print("Shortest path from", source, "to", destination, ":", path)