다익스트라 알고리즘(Dijkstra Algorithm)
한 꼭짓점을 "소스" 꼭지점으로 고정하고 그래프의 다른 모든 꼭짓점까지의 최단경로를 찾는 알고리즘
bfs에서는 최단 경로를 구하는 것이지만 다익스트라 알고리즘은 최단 시간(거리) 경로를 찾는 알고리즘이다
위 그림에서 A에서 B까지 가는 최단 경로를 찾을려면
1. 먼저 각각의 경로로가는 거리를 초기화한다
A = 0
B = null
C = null
D = null
E = null
2. A에서 갈 수 있는 경로 B, C 거리는 넣는다
A = 0
B = 5
C = 2
D = null
E = null
3. B에서 갈 수 있는 경로 D 거리를 넣는다
A = 0
B = 5
C = 2
D = 7
E = null
4. C에서 갈 수 있는 경로 B, E 거리를 넣는다
B로 가는 경로가 2 + 2 = 4 이므로 기존 A에서 B로 가는 거리 5보다 작으므로 수정해준다
마찬가지로 D까지 가는 경로도 수정해준다
A = 0
B = 4
C = 2
D = 6
E = 9
5. D에서 갈 수 있는 경로 E 거리를 넣는다
E로 가는 거리가 2 + 2 + 2 + 1 = 7 이므로 기존 E로 가는 경로 9보다 작으므로 수정해준다
A = 0
B = 4
C = 2
D = 6
E = 7
따라서 A에서 E로가는 최단 경로(거리)는 7이다.
참고
'프로그래밍 > Algorithm' 카테고리의 다른 글
동적 프로그래밍(Dynamic programming) (0) | 2021.09.03 |
---|---|
탐욕 알고리즘(Greedy) (0) | 2021.09.01 |
너비 우선 탐색(BFS : Breadth-First Search) (0) | 2021.08.18 |
퀵 정렬(Quicksort) (0) | 2021.08.15 |
재귀(Recursion) (0) | 2021.08.11 |