Shortest Path(최단 경로)는 가중치가 있는 그래프에서 어떤 정점에서 다른 정점으로 이동하기까지 가장 짧은 가중치의 합으로 목적지에 도달하는 방법을 찾기 위한 전략이다.
Algorithm Dijkstra(G, n, v0, Dmin)
- For u ∈ V do Dmin(u) <- g(v0, u)
- R <- {v0} //Dmin(v) is Red for Red Nodes
- While |R| < n do
- Among nodes not in R, find u with smallest dmin(u)
- R <- R ∪ {u}
- For w not ∈ R do Dmin(w) <- min[Dmin(w), Dmin(u) + g(u,w)]
- //Dmin(w) is Blue for Blue Nodes
(Red Node) : Shortest Path가 존재하는 노드
(Blue Node) : Red Node의 인접 노드
에 추가하는 노드는 중 Path가 제일 작은 노드이다.
를 우선순위 큐로 구현한다. 이 때 우선순위 큐에 A에서 B로 간다는 메세지를 넣는다. 갱신을 편하게 하기 위해서이다.







BFS를 변형했다고 생각하면 됨. weight만큼 공간을 넣고 먼저 도착하는 거로 하기. 다만 구현에 문제가 있음
다익스트라는 항상 작은 거 부터 큰 거로(가까운 거부터 먼 거로) 찾는다. 왜인가? 빨간 집합이 있고 vi와 그 뒤에 들어온 vi+1이 있다면