Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Dijkstra

img

<정의>

  • 방향 그래프에서 한 지점에서 모든 지점까지의 최소거리를 구할 때 사용
  • start 노드부터 end 노드까지의 최소거리 = dist[end]
  • 시간복잡도 O(V^3) (V는 노드의 개수)
  • 가중치가 음이 아닐 때만 적용 가능
  • 정점끼리의 거리를 내림차순의 우선순위큐로 구현 (힙구조)

<원리>

  1. 자기자신은 0, 직접적으로 연결되지 않은 노드는 INF로 초기화한다
  2. 출발 노드를 기준으로 이어진 각 노드의 최소 비용을 저장한다
  3. 방문하지 않은 노드 중에서 가장 비용이 적은 노드를 선택한다 (우선순위큐)
  4. 한 노드에서 연결된 모든 간선을 선택 시 visit 처리를 하고 3번 반복

<장점>

  • 시간복잡도가 O(N*lgN)으로 상대적으로 빠르다
  • 출발지가 정해져 있을때 dp를 이용해 모든 정점까지의 거리를 구할 수 있다.