임의의 정점을 출발 집합에 더할 때, 그 정점까지의 최단 거리 계산이 끝났다고 가정 - 즉, 탐색을 위한 출발노드가 갖는 최단거리는 최단거리임이 보장되어야함
따라서, 음수를 처리할 수 없음 - 벨만-포드 알고리즘과 같이 음수 사용이 가능한 알고리즘 사용
다익스트라 알고리즘 속도
BFS에서 가장 가까운 순서를 찾을 때 우선순위 큐 사용
시간 복잡도가 O((V+E)logV) - 출발 노드부터 각 정점에 이어진 간선들 중 최소 가중치의 정점을 선택 - 모든 간선이 heap에 push : E log E - 탐색할 노드 선택을 위해 heap에서 pop : V log E -> 다음 최소값과 힙의 특성 유지를 위해 구조를 바꿈 - 따라서 이 둘을 더하면 (V+E) log E - 모든 정점이 출발지에서 도달이 가능하면 O(E logV)
그런데 왜 log E가 아니고 log V인가? - 실제 구현해보면 우선순위 큐에 push되는 요소는 간선임 - 그렇다면 힙 트리에 구성되는 요소의 개수인 E를 기준으로 log E, 즉, (V+E) log E라고 해야하지 않나? - 찾아보니 E <= V2이므로 E = V로 보며, log V라고 표시한다고 함(음...) - 다른 이유가 있을 수 있으니 계속 찾아보자