홍카나의 공부방

[Algorithm] 최단 경로 찾기 - 다익스트라 알고리즘 본문

Data Structure + Algorithm

[Algorithm] 최단 경로 찾기 - 다익스트라 알고리즘

홍문관카페나무 2023. 6. 7. 22:15

최단 경로 문제

  • 최단 경로 알고리즘은 가장 짧은 경로를 찾는 알고리즘을 의미한다.
  • 일반적으로 그래프에서 지점을 노드(Node)로 표현하고, 노드간 연결된 선은 간선(Edge)으로 표현한다.
  • 대표적인 최단 경로 알고리즘으로 다익스트라 알고리즘이 존재한다.

 

다익스트라 최단 경로 알고리즘

  • 특정 노드에서 출발하여 다른 모든 노드로 가는 최단 경로를 계산한다.
  • 다익스트라 알고리즘은 매 상황에서 가장 비용이 적은 노드를 선택해 임의의 과정을 반복한다. (그래서 그리디 알고리즘으로 분류하기도 한다.)

알고리즘의 동작 과정은 다음과 같다.

  1. 출발 노드를 설정한다.
  2. 최단 거리 테이블을 초기화한다.
  3. 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택한다.
  4. 해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블을 갱신한다.
  5. 위 과정 중 3번,4번을 반복한다.
  6. 마지막 남은 노드는 사실상 처리하지 않아도 무방하다.
  • 알고리즘 동작에서 최단 거리 테이블은 각 노드에 대한 현재까지의 최단 거리 정보를 가지고 있다.
  • 처리 과정에서 더 짧은 경로를 찾으면, 그 정보를 최신으로 갱신한다.

 

개선된 다익스트라 구현 방법

  • 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택하기 위해 Heap 자료구조를 이용한다.
  • 현재의 최단 거리가 가장 짧은 노드를 선택해야 하므로 최소 힙을 사용한다.
반응형