Algorithm/이론
다익스트라(Dijkstra)
sirius
2021. 3. 15. 09:45
다익스트라(Dijkstra)
최단경로 알고리즘
그리디 알고리즘으로 분류 - 매번 가장 비용이 적은 노드를 선택해서 반복
DFS/BFS 의 경우 모든 노드간의 가중치가 같고, 얼마나 적은 수의 노드를 거쳤는지 탐색
다익스트라의 경우 노드간의 가중치가 달라서 얼마나 적은 가중치의 합으로 목적지에 도착했는지 탐색
- 출발 노드 설정
- 최단 거리 테이블 초기화
- 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드 선택
- 해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블 갱신
- 3번 4번 반복
시간복잡도 : O(N²)
단계마다 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택하기 위해 매 단계마다 1차원 리스트의 모든 원소를 확인(순차탐색)한다.
우선순위 큐
우선순위가 가장 높은 데이터를 먼저 삭제
시간복잡도 : O(NlogN)
큐에서 노드를 하나씩 꺼내 검사하는 반복문은 노드의 개수 이상으로 반복되지 않는다.
최대 N개의 간선 데이터를 힙에 넣었다가 다시 빼는 것