다익스트라 예제 - 1

문제 분석

  • 에지의 가중치가 10 이하의 자연수, 시작점과 다른 노드와 관련된 최단 거리를 문제로, 다익스트라 알고리즘의 가장 기본적인 형태를 구현할 수 있는지 묻는 문제다.

손으로 풀어보기

  1. 인접 리스트에 노드를 저장하고 거리 리스트를 초기화한다. 거리 리스트는 출발 노드는 0, 나머지는 무한으로 초기화한다.

img_5.png
  1. 최초 시작점을 우선순위 큐에 삽입하고, 다음 과정에 따라 다익스트라 알고리즘을 수행한다.

  • 다익스트라 알고리즘 수행 과정

    1. 거리 리스트에서 아직 방문하지 않은 노드 중 현재 값이 가장 작은 노드를 선택한다. 즉, 우선순위 큐에서 데이터를 뽑는다.

    2. 해당 노드와 연결된 노드들의 최단 거릿값을 다음 공식으로 업데이트한다.

      • 연결 노드 거리 리스트 값보다 선택 노드의 거리 리스트 값 + 에지 가중치가 더 작은 경우 업데이트 수행

      • 업데이트가 수행되는 동안 연결 노드를 우선순위 큐에 삽입

    3. 큐가 빌 때까지 과정 1~2를 반복한다.

img_6.png
  1. 완성된 거리 리스트의 값을 출력한다.

슈도코드

코드 구현 - 파이썬

코드 구현 - 자바

Last updated