최단경로를 찾는 알고리즘이다.
가정
1. 음수 가중치가 존재하지 않는다
2. 시작점 s로부터 최단 경로를 알아낸 노드들의 집합을 S
3. S에 속하지 않는 노드들 u에 대해, d[u]는 S의 노드들을 거쳐 u까지 오는 경로 중 최단 경로이다.
Theorem. U에 속하는 모든 노드들 중 d[u]가 노드 u에 대해, d[u]는 s에서 u까지의 최단 경로이다.
Proof)
s에서 u까지 다른 최단 경로가 존재한다고 하자. 이 때, 가정 3에 의해, S에 속하지 않는 점 v를 지나게되는데,
d[u] = d[v] + u(v,w)가 된다. 하지만 d[u]<=d[v]이므로 모순이다. 따라서 위 이론이 성립한다.
알고리즘 순서
1. minimum d[u]를 찾는다.
2. u와 연결된, d[v]를 update한다. ( 가정3에 의해, S가 변경되었기 때문에 update해줘야 된다)
'ComputerScience > Algorithm' 카테고리의 다른 글
Huffman Coding (0) | 2020.06.26 |
---|---|
floyd-warshall algorithm (0) | 2020.06.21 |
최단경로 알고리즘 (0) | 2020.06.05 |
[javascript] MST-Kruskal 알고리즘 (0) | 2020.05.26 |
그래프 (0) | 2020.05.22 |