티스토리 뷰
- 다익스트라 알고리즘은 도로 교통망 같은 곳에서 나타날 수 있는 그래프에서 꼭짓점 간의 최단 경로를 찾는 알고리즘.
- 특정한 노드에서 출발하여 다른 모든 노드로 가는 최단 경로를 계산함.
- 다익스트라 최단 경로 알고리즘은 음의 간선이 없을 때 정상적으로 동작.
- 다익스트라 알고리즘 동작 과정
- 출발 노드를 설정함.
- 최단 거리 테이블을 초기화함.
- 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택함.
- 해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블을 갱신함.
- 위 과정에서 3번과 4번을 반복함.
- 알고리즘 동작 과정에서 최단 거리 테이블은 각 노드에 대한 현재까지의 최단 거리 정보를 가지고 있음.
- 처리 과정에서 더 짧은 경로를 찾으면 갱신함.
- 다익스트라 알고리즘을 수행한 뒤에 테이블에 각 노드까지의 최단 거리 정보가 저장됨.
- 다익스트라 알고리즘을 구현하는 방법
- 간단한 구현 방법
- 단계마다 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택하기 위해 매 단계마다 1차원 테이블의 모든 원소를 확인 (순차 탐색) 함.
- 총 O(V)번에 걸쳐서 최단 거리가 가장 짧은 노드를 매번 선형 탐색해야 함. 따라서, 전체 시간 복잡도는 O(V^2)
- 개선된 구현 방법
- 단계마다 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택하기 위해 힙(Heap) 자료구조를 이용.
- 다익스트라 알고리즘이 동작하는 기본 원리는 동일.
- 현재 가장 가까운 노드를 저장해 놓기 위해서 힙 자료구조를 추가적으로 이용.
- 현재의 최단 거리가 가장 짧은 노드를 선택해야 하므로 최소 힙을 사용.
- 간단한 구현 방법
- 힙 자료구조를 이용하는 다익스트라 알고리즘의 시간 복잡도는 O(ElogV)
[참고]
www.youtube.com/watch?v=aOhhNFTIeFI&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=8
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- http://www.nextree.co.kr/p6960/
- Asynchronous
- 스택/큐
- Handler Interceptor
- 프로그래머스
- 프로그래머스 Level 2
- 동기
- 비동기
- Filter
- Synchronous
- non-blocking
- blocking
- 해시
- 코딩테스트 고득점 Kit
- 핸들러 인터셉터
- 인터셉터
- 프로그래머스 Level 1
- 프로그래머스 Level 3
- 논블로킹
- a
- 필터
- 블로킹
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함