Dijkstra’s Algorithm Pseudocode
Pseudocode Implementation
function Dijkstra(graph, source):
create distance map
for each node in graph:
distance[node] = infinity
visited[node] = false
distance[source] = 0
while there exists an unvisited node:
current = node with smallest distance that is unvisited
for each neighbor of current:
if visited[neighbor] == false:
new_distance = distance[current] + weight(current, neighbor)
if new_distance < distance[neighbor]:
distance[neighbor] = new_distance
visited[current] = true
return distance
Optimized Version (Priority Queue)
function Dijkstra(graph, source):
create distance map
for each node:
distance[node] = infinity
distance[source] = 0
priority_queue = min-heap
push (0, source) into priority_queue
while priority_queue is not empty:
(current_distance, current_node) = pop from queue
if current_distance > distance[current_node]:
continue
for each neighbor of current_node:
new_distance = current_distance + weight(current_node, neighbor)
if new_distance < distance[neighbor]:
distance[neighbor] = new_distance
push (new_distance, neighbor) into priority_queue
return distance