최단 경로
[알고리즘 소개]
가중치가 존재하는 그래프에서 출발지가 정해졌을 때 해당 출발지에서 다른 정점으로 이동하는 최단 경로를 구하는 알고리즘.
[알고리즘 특징]
- 우선순위 큐 사용
- dp와 그리디
- 음수 간선 불가
[코딩 방법]
- 인접 리스트 그래프를 정점과 가중치를 저장할 클래스(구조체)로 구성
- dp용 배열과 클래스 타입 최소 우선순위 큐 생성
- 시작점에 대해 배열의 가중치 0으로 초기화, 우선순위 큐에 시작점 정보 넣음
- 우선순위 큐가 빌 때까지 원소를 제거
- 제거한 원소에 대해 dp값보다 원소의 가중치가 더 큰 경우 가지치기
- 가지치기 후 인접 정점 확인, dp값보다 작다면 dp 갱신 후 우선순위 큐에 삽입
[시간 복잡도]
$O(E logE)$
[공부용 링크]
'정리 > 알고리즘' 카테고리의 다른 글
[알고리즘] 파스칼의 삼각형 (Pascal's Triangle) (0) | 2021.03.26 |
---|---|
[알고리즘] 분할 정복을 이용한 거듭제곱 (0) | 2021.03.25 |
[알고리즘] 유클리드 호제법 (Euclidean Algorithm) (0) | 2021.03.25 |
[알고리즘] 플로이드-와샬 (Floyd-Warshall) (0) | 2021.03.25 |
[알고리즘] 벨만-포드 (Bellman-Ford) (0) | 2021.03.21 |