다익스트라 알고리즘(Dijkstra's Algorithm)은 그래프 상에서 한 정점에서 다른 모든 정점으로의 최단 경로(Shortest Path)를 계산하는 알고리즘입니다.
다익스트라 알고리즘은 그리디 알고리즘(Greedy Algorithm)을 기반으로 동작하며, 탐색 과정에서 최단 경로를 점진적으로 확정합니다.
작동 순서
1. 초기화:
distance
)는 0으로 설정. visited
리스트 생성. 정점 선택:
distance
가 가장 작은 정점을 선택. 거리 갱신:
반복:
결과 출력:
그래프:
초기 상태:
distance
: {A: 0, B: ∞, C: ∞, D: ∞, E: ∞} visited
: {A: False, B: False, C: False, D: False, E: False} 단계별 계산 과정
1. Step 1 (A 선택):
distance
: {A: 0, B: 1, C: 4, D: ∞, E: ∞} Step 2 (B 선택):
distance
: {A: 0, B: 1, C: 3, D: 7, E: ∞} Step 3 (C 선택):
distance
: {A: 0, B: 1, C: 3, D: 6, E: ∞} Step 4 (D 선택):
distance
: {A: 0, B: 1, C: 3, D: 6, E: 7} 결과:
시간 복잡도:
가중치 조건:
결과:
장점 | 단점 |
---|---|
구현이 간단하며 직관적. | 음수 가중치를 처리하지 못함. |
최단 경로를 빠르게 계산 (특히 적은 간선의 그래프). | 대규모 그래프에서 메모리와 연산 비용이 증가. |
네트워크 라우팅, 맵 서비스 등 다양한 분야에 적용 가능. | 모든 경로를 고려하지 않으므로 글로벌 최적 해를 놓칠 가능성. |
네트워크 라우팅:
맵 애플리케이션:
교통 시스템:
통신 네트워크:
다익스트라 알고리즘은 단일 출발점에서 모든 노드까지의 최단 경로를 계산하는 데 효율적인 알고리즘으로, 네트워크 라우팅, 지도 서비스 등 다양한 분야에서 사용됩니다. 비음수 가중치의 그래프에서만 작동하며, 음수 가중치가 있는 경우 다른 알고리즘을 사용해야 합니다.