Algorithm(pt.2)
최단 경로 알고리즘
- 가장 짧은 경로를 찾는 것
- 한 지점 → 한 지점
- 한 지점 → 모든 지점
- 모든 지점 → 모든 지점
- 지점 = 노드 (예. 마을, 국가 등..)
- 이동 가능함 = 간선으로 표시
다익스트라 최단 경로 알고리즘
- 특정 한 노드 → 다른 모든 노드 계산
- 그리디 알고리즘으로 가장 비용이 적은 노드 선택
- 동작 과정
- 출발 노드 설정
- 최단 거리 테이블 초기화 (자신의 노드 = 0, 그 외 노드 거리 = $\infty$)
- 방문하지 않은 노드에서 최단 거리가 가장 짧은 노드 선택하고 다른 노드로 가는 비용 계산하는 과정 반복
- 동일 비용을 갖는 경우 더 작은 수를 갖는 노드부터 우선 계산
- 마지막 노드 정보를 처리하지 않아도 상관없음 (이전의 정보를 활용하여 이미 가장 짧은 노드의 거리를 갱신했기 때문)
- 처리 과정 중 더 짧은 노드가 존재하면 해당 노드를 최단 거리 노드로 갱신
- 한 번 처리된 노드의 최단 거리는 고정 → 변화 없음
- 노드 탐색 시 BFS 이용하는 알고리즘
우선순위 큐
- 우선순위가 높은 데이터를 먼저 삭제
- 힙 (최소 힙, 최대 힙)
- 다익스트라 알고리즘에서 사용됨. (시간을 개선시키기 위함)
- 파이썬: heapq 라이브러리 사용 가능 (min heap 사용) ⇒ 다익스트라 알고리즘에서 사용됨.
— 참고: 파이썬 알고리즘 인터뷰 책 & 이코테 2021 강의