내비게이션이 가장 빠른 길을 찾고, 라우터가 패킷을 보낼 경로를 정할 때 바탕에 있는 생각은 같습니다. 출발점에서 가까운 곳부터 확정해 나가는 것입니다. 다익스트라 알고리즘은 정보처리기사 알고리즘 문제와 네트워크 과목의 OSPF(링크 상태 라우팅)에 동시에 걸쳐 있는 토픽입니다.
정의: 가중치가 0 이상인 그래프에서 한 출발 정점으로부터 모든 정점까지의 최단 거리를 구하는 알고리즘으로, 아직 확정되지 않은 정점 중 거리가 가장 작은 정점을 골라 확정하고 그 이웃의 거리를 갱신(완화, Relaxation)하는 과정을 반복합니다(Dijkstra, 1959).
| 단계 | 확정 정점 | S | A | B | C | D |
|---|---|---|---|---|---|---|
| 초기 | – | 0 | ∞ | ∞ | ∞ | ∞ |
| 1 | S(0) | 0 | 4 | 1 | ∞ | ∞ |
| 2 | B(1) | 0 | 3 (B 경유) | 1 | 6 | ∞ |
| 3 | A(3) | 0 | 3 | 1 | 4 (A 경유) | 8 |
| 4 | C(4) | 0 | 3 | 1 | 4 | 7 (C 경유) |
| 5 | D(7) | 0 | 3 | 1 | 4 | 7 |
S에서 A로 바로 가면 4지만, B를 거치면 1+2=3으로 더 짧습니다. 최종 D까지의 최단 경로는 S → B → A → C → D, 거리 7입니다. 직전 정점 기록을 거꾸로 따라가면 경로가 복원됩니다. 위 결과는 코드로 검산했습니다.
| 구현 | 최솟값 찾기 | 전체 복잡도 | 유리한 경우 |
|---|---|---|---|
| 배열(선형 탐색) | O(V) | O(V²) | 간선이 많은 밀집 그래프 |
| 이진 힙 우선순위 큐 | O(log V) | O((V+E) log V) | 간선이 적은 희소 그래프 |
다익스트라는 한 번 확정한 거리는 다시 줄어들지 않는다고 가정합니다. 가중치가 모두 0 이상이면 나중에 찾은 경로는 항상 더 길거나 같기 때문에 이 가정이 성립합니다. 음수 간선이 있으면 이미 확정한 정점으로 돌아오는 더 짧은 경로가 생길 수 있어 결과가 틀립니다. 이때는 벨만-포드를 씁니다.
| 알고리즘 | 문제 유형 | 음수 가중치 | 복잡도 |
|---|---|---|---|
| 다익스트라 | 단일 출발점 | 불가 | O((V+E) log V) |
| 벨만-포드 | 단일 출발점 | 가능, 음수 사이클 탐지 | O(VE) |
| 플로이드-워셜 | 모든 쌍 | 가능(음수 사이클 없을 때) | O(V³) |
다익스트라는 비음수 가중치 그래프에서 가장 가까운 미확정 정점을 확정하고 이웃을 완화하는 탐욕 알고리즘으로, 힙 사용 시 O((V+E) log V)이며 음수 간선이 있으면 벨만-포드를 씁니다.
학습용 정리이며 실제 시험 문항과 다를 수 있습니다. 출제 기준은 큐넷 공지를 확인하세요. 그림은 이해를 돕기 위한 개념도와 예시입니다.
블룸 필터(Bloom Filter)는 "이 값을 본 적이 있는가"라는 질문에 아주 적은 메모리로 답하는 확률적 자료구조다.…
정해진 무게만 담을 수 있는 가방에 가치가 가장 크도록 물건을 고르는 문제는 예산 배분, 서버…
서울 아파트값이 89주째 올랐다는 소식과 강남구·서초구가 11주째 내렸다는 소식이 같은 주에 나왔습니다. 모순처럼 보이지만 둘…
처음 만난 두 사람이 모두가 듣고 있는 자리에서 대화하면서도 둘만 아는 비밀 키를 만들 수…
서버에 작업을 하나 더 얹었을 뿐인데 갑자기 전체가 느려지고, 정작 CPU 사용률은 바닥으로 떨어지는 경우가…