그래프에서 하나의 시작 정점(source)에서 다른 모든 정점까지의 최단 경로를 찾는 알고리즘
가중치
가 있는 그래프에서 사용가중치
가 음수인 경우에는 적용이 될 수도 있고 되지 않을 수도 있음최단 경로
: 시작 정점에서 특정 정점까지 도달하는 경로 중 가중치의 합이 최소인 경로우선순위 큐(Priority Queue)
를 이용하며 현재까지 최단 경로가 확정된 정점을 기반으로 인접한 정점들을 점진적으로 탐색우선순위 큐
를 사용하는 이유는 현재까지 발견된 가장 짧은 거리의 노드를 효율적으로 선택하기 위함우선순위 큐
는 값이 작은 요소부터 꺼낼 수 있는 가료구조우선순위 큐
에 (현재까지의 거리, 노드 번호)
저장 >> dist[]
생성0
으로 설정무한대
로 초기화우선순위 큐(Priority Queue)
를 생성하고 시작 정점을 큐에 삽입함if d[u] + c(u, v) < d[v]:
d[v] = d[u] + c(u, v)
d[u]
: 시작 정점에서 정점 u
까지의 최단 경로d[v]
: 시작 정점에서 정점 v
까지의 현재 알려진 최단 경로c(u, v)
: 정점 u
에서 정점 v
로 가는 간선의 가중치더 짧은 경로가 발견되었을 때 그 경로로 최단 경로를 갱신하는 과정
인접 행렬
: 우선순위 큐
, 인접 리스트
: