1 function Dijkstra(Graph, source):
2
3 create vertex set Q
4
5 for each vertex v in Graph: // 초기화
6 dist[v] ← INFINITY // 소스에서 v까지의 아직 모르는 길이
7 prev[v] ← UNDEFINED // 소스에서 최적 경로의 이전 꼭짓점
8 add v to Q // 모든 노드는 초기에 Q에 속해있다 (미방문 집합)
9
10 dist[source] ← 0 // 소스에서 소스까지의 길이
11
12 while Q is not empty:
13 u ← vertex in Q with min dist[u] // 최소 거리를 갖는 꼭짓점
14 // 을 가장 먼저 선택한다
15 remove u from Q
16
17 for each neighbor v of u: // v는 여전히 Q에 있다.
18 alt ← dist[u] + length(u, v)
19 if alt < dist[v]: // v 까지의 더 짧은 경로를 찾았을 때
20 dist[v] ← alt
21 prev[v] ← u
22
23 return dist[], prev[]