1. 개념
다익스트라 알고리즘은 어떤 노드에서 다른 노드까지의 거리(가중치)가 주어졌을 때
특정 노드에서 다른 모든 노드까지의 최단 거리를 구하는 알고리즘이다.
이때 음의 가중치가 존재해서는 안되고, 방향-무방향 그래프 모두 가능하다.
2. 구현
Distance[i] : 출발점(S)에서 i 정점까지의 최단거리를 저장하는 배열
--> 초기화 과정에서 Distance[S] = 0 을 제외한 나머지는 모두 무한대로 초기화한다.
방문하지 않은 정점 중에서 Distance가 최소인 정점 I를 선택한다.
정점 I와 인접한 모든 정점 J에 대해서 현재까지 저장된 최단거리보다 새로운 정점을 거쳐서 가는 거리가
더 작을 경우에는 D[j] = D[i] + 새로운 정점까지의 거리로 갱신한다.
말로만 설명해서는 알기 힘들고 이 개념은 예제 코드를 참고하기를 바란다. (우선순위 큐를 사용했다)
[다익스트라 알고리즘 예제 : http://gyutts.tistory.com/115?category=755806]
'Programming > Algorithm' 카테고리의 다른 글
유클리드 호제법(Euclidean algorithm) (0) | 2018.08.22 |
---|---|
크루스칼 알고리즘(Kruskal's Algorithm) - 최소 신장 트리(Minimum Spanning Tree) (0) | 2018.08.22 |
서로소 집합(Disjoint Set: Union-Find) (0) | 2018.08.22 |
라빈 카프 알고리즘(Rabin-Karp Algorithm) (0) | 2018.08.09 |
문자열 검색 알고리즘(KMP) (0) | 2018.08.08 |