음의 가중치가 없는 그래프의 한 정점에서 모든 정점까지의 최단거리를 각각 구하는 알고리즘이다.
쉽게 말해, 한 정점에서 다른 정점으로 이동할 때 가장 빠른 길을 찾아주는 알고리즘이다.
O(V^2)
V: 노드의 숫자, E: 간선의 숫자라고 할 때, 기본 알고리즘의 시간복잡도는 O(V^2) 이다.
우선순위 큐를 사용해서 이를 좀 더 개선 할 수 있다.
방법은 2가지인데, 1번째로는 각 정점마다 인접한 간선들을 모두 검사하는 작업이고, 2번째로는 우선순위 큐에 원소를 넣고 삭제하는 작업이다.
모든 간선이 한번씩 검사된다는 점에서 첫 번째 작업이 O(E), 각 간선마다 우선수위 큐에 자료가 삽입 연산이 일어난다는 점에서 O(ElogE)이며, 이 둘을 합쳤을 때, (E+ElogE)의 시간복잡도는 O(ElogE)가 된다.
대개의 그래프의 경우 V^2 > E이므로 O(logE) = (logV)이고, 따라서, 시간 복잡도는 O(ElogV)가 될 수 있다.