https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%81%AC%EC%8A%A4%ED%8A%B8%EB%9D%BC_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98
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[]