[알고리즘] 다익스트라(Dijkstra) 알고리즘

[알고리즘] 다익스트라(Dijkstra) 알고리즘

다익스트라 알고리즘은 다음과 같다.

G[A][B]는 A와 B 사이의 거리라고 하자.

1. 출발점으로부터의 최단거리를 저장할 배열 d[v]를 만들고, 출발 노드에는 0으로, 출발점을 제외한 다른 노드들에는 Infinity(무한대)로 선언한다.

2. 현재 노드 A에 출발 노드를 저장한다.

3. A로부터 갈 수 있는 임의의 노드 B에 대해, d[A]+G[A][B] 와 d[B]의 값을 비교한다.

4. 만약 d[A]+G[A][B] 가 더 짧다면, d[B]의 값을 이 값으로 갱신시킨다. ( edge relaxtion )

5. 모든 이웃 노드 B에 대해 이 작업을 수행한다.

6. A의 상태를 "방문 완료"로 바꾼다. 그러면 이제 더 이상 A는 사용하지 않는다.

7. "미방문" 상태인 모든 노드들 중, 출발점으로부터의 거리가 제일 짧은 짧은 노드 하나를 골라서 그 노드를 A에 저장한다.

from http://juyami.tistory.com/27 by ccl(A) rewrite - 2021-11-25 04:01:19