다익스트라 알고리즘 정리, 최단 경로를 한 단계씩 따라가 보고 음수 가중치에서 틀리는 이유까지

내비게이션이 가장 빠른 길을 찾고, 라우터가 패킷을 보낼 경로를 정할 때 바탕에 있는 생각은 같습니다. 출발점에서 가까운 곳부터 확정해 나가는 것입니다. 다익스트라 알고리즘은 정보처리기사 알고리즘 문제와 네트워크 과목의 OSPF(링크 상태 라우팅)에 동시에 걸쳐 있는 토픽입니다.

다익스트라는 가장 가까운 미확정 정점부터 거리를 확정하는 탐욕 알고리즘

정의: 가중치가 0 이상인 그래프에서 한 출발 정점으로부터 모든 정점까지의 최단 거리를 구하는 알고리즘으로, 아직 확정되지 않은 정점 중 거리가 가장 작은 정점을 골라 확정하고 그 이웃의 거리를 갱신(완화, Relaxation)하는 과정을 반복합니다(Dijkstra, 1959).

  • 핵심 키워드: 단일 출발점 최단 경로, 탐욕법, 완화(Relaxation), 우선순위 큐
  • 완화: dist[u] + w(u,v) < dist[v] 이면 dist[v]를 더 짧은 값으로 바꾸고 직전 정점을 u로 기록합니다.

예시 그래프로 따라가는 단계별 거리 갱신

출발점 S. 굵은 화살표가 최단 경로 트리이고 빨간 숫자가 최종 최단 거리입니다.
단계 확정 정점 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³)

답안에서 놓치기 쉬운 포인트

  • 최소 신장 트리(크루스칼·프림)와 혼동하지 마세요. 다익스트라는 출발점 기준 경로 길이를, MST는 전체 연결 비용을 최소화합니다.
  • 네트워크 과목 연결: OSPF는 각 라우터가 링크 상태 정보로 다익스트라(SPF)를 계산해 라우팅 테이블을 만듭니다. 거리 벡터 방식인 RIP와 대비해 쓰면 좋습니다.
  • 목적지가 하나뿐이면 휴리스틱을 더한 A* 알고리즘이 탐색량을 줄입니다.

시험 직전 한 줄 요약

다익스트라는 비음수 가중치 그래프에서 가장 가까운 미확정 정점을 확정하고 이웃을 완화하는 탐욕 알고리즘으로, 힙 사용 시 O((V+E) log V)이며 음수 간선이 있으면 벨만-포드를 씁니다.

학습용 정리이며 실제 시험 문항과 다를 수 있습니다. 출제 기준은 큐넷 공지를 확인하세요. 그림은 이해를 돕기 위한 개념도와 예시입니다.

zerg96

Recent Posts

블룸 필터(Bloom Filter) 원리와 거짓 양성률, 원소당 10비트로 오탐 0.8%가 나오는 이유와 쿠쿠 필터 비교

블룸 필터(Bloom Filter)는 "이 값을 본 적이 있는가"라는 질문에 아주 적은 메모리로 답하는 확률적 자료구조다.…

4시간 ago

0/1 배낭 문제와 동적계획법 정리, DP 표를 직접 채워 보고 탐욕법이 실패하는 이유까지

정해진 무게만 담을 수 있는 가방에 가치가 가장 크도록 물건을 고르는 문제는 예산 배분, 서버…

6시간 ago

서울 집값 89주째 상승인데 강남·서초는 -0.3%, 지금 어디가 오르나

서울 아파트값이 89주째 올랐다는 소식과 강남구·서초구가 11주째 내렸다는 소식이 같은 주에 나왔습니다. 모순처럼 보이지만 둘…

11시간 ago

디피-헬만 키 교환 정리, 작은 숫자로 직접 계산해 보고 중간자 공격에 약한 이유까지

처음 만난 두 사람이 모두가 듣고 있는 자리에서 대화하면서도 둘만 아는 비밀 키를 만들 수…

17시간 ago

스래싱(Thrashing) 원인과 해결, CPU 이용률이 갑자기 꺾이는 이유와 워킹셋·PFF 비교

서버에 작업을 하나 더 얹었을 뿐인데 갑자기 전체가 느려지고, 정작 CPU 사용률은 바닥으로 떨어지는 경우가…

18시간 ago

2026년 11월 DIAT 시험 일정 (접수·시험·발표)

11월에 일정이 있는 DIAT 시험을 정리했습니다. 접수, 시험, 합격 발표 날짜를 한 번에 볼 수…

1일 ago