알고리즘 [그래프] - 다익스트라

유의선·2023년 10월 11일
0

다익스트라(dijkstra) 알고리즘은 그래프에서 최단 거리를 구하는 알고리즘으로, 주요 특징은 다음과 같다.

기능특징시간 복잡도(노드 수 : V, 에지 수 : E)
출발 노드와 모든 노드간의 최단 거리 탐색에지는 모두 양수O(ElogV)

특정 노드에서 다른 노드들의 최단 거리를 구하는 문제가 주어졌을 때 다익스트라 알고리즘을 사용하면 문제를 해결할 수 있다.


다익스트라 알고리즘 핵심 이론

1. 인접 리스트로 그래프 구현하기

2. 최단 거리 배열 초기화하기


출발 노드는 0, 이외의 노드는 무한으로 초기화한다. 무한은 적당히 큰 값을 사용하면 된다.

3. 값이 가장 작은 노드 고르기


최단 거리 배열에서 현재 값이 가장 작은 노드를 고른다. 여기서는 값이 0인 출발 노드에서 시작한다.

4. 최단 거리 배열 업데이트하기

선택된 노드에 연결된 에지의 값을 바탕으로 다른 노드의 값을 업데이트한다. 1단계에서 저장해 놓은 연결 리스트를 이용해 현재 선택한 노드의 에지들을 탐색하고 업데이트하면 된다.

연결 노드의 최단 거리는 Min(선택 노드의 최단 거리 배열의 값 + 에지 가중치, 연결 노드의 최단 거리 배열의 값)으로 업데이트한다.

5. 과정 3 ~ 4 를 반복해 최단 거리 배열 완성하기


모든 노드가 처리될 때까지 과정 3 ~ 4를 반복한다. 과정 4에서 선택 노드가 될 때마다 다시 선택되지 않도록 방문 배열을 만들어 처리하고, 모든 노드가 선택될 때까지 반복하면 최단 거리 배열이 완성된다.


  • Do it! 알고리즘 코딩테스트 자바 편

0개의 댓글