다익스트라 (Dijkstra)

2025. 5. 21. 16:05·PS/알고리즘
728x90

가중치가 있는 그래프에서 한 정점에서 다른 모든 정점까지의 최단 거리를 구하는 알고리즘

단, 모든 간선의 가중치는 0 이상

핵심 이론

  1. 인접 리스트로 그래프 구현
  2. 최단 거리 배열 초기화
  3. 값이 가장 작은 노드 선택
  4. 최단 거리 배열 업데이트
  5. 3, 4 반복하여 최단 거리 배열 완성

1. 인접리스트로 그래프 구현

인접 행렬로 구현해도 좋으나 시간 복잡도 측면에서 N크기가 클 것을 대비해 인접 리스트로 구현하는 게 나음

그래프의 연결을 표현하기 위해 배열의 자료형은 `(노드, 가중치)` 형태로 선언하여 연결


2. 최단 거리 배열 초기화

출발 노드는 0, 나머지 노드는 무한으로 초기화

이때 무한은 적당히 큰 값을 사용

3. 값이 가장 작은 노드 구하기

여기선 출발 노드 선택

최단 거리 배열에서 현재 값이 가장 작은 노드 선택, 처음에는 출발 노드를 선택하면 됨


4. 최단 거리 배열 업데이트

  • 선택된 노드에 연결된 가중치 값을 바탕으로 다른 노드의 값 없데이트
  • 1단계에서 저장해 둔 연결 리스트를 이용해 현재 선택된 노드의 간선 탐색 & 업데이트
  • 연결 노드의 최단 거리는 두 값 중 더 작은 값 선택

 👉 `Min (선택 노드의 D[N] 값 + 가중치, 연결 노드의 D[N] 값)`


5. 3 ~ 4 반복하여 최단 거리 배열 완성

선택 노드가 될 때마다, 다시 선택되지 않도록 방문처리 및 모든 노드가 방문될 때까지 반복하면
최단거리 배열 완성!


정리

다익스트라는 출발 노드와 그외 노드 간의 최단 거리를 구하는 알고리즘이고, 간선은 항상 양수여야 함

출발 노드와 도착 노드 간의 최단 거리가 아닌, 출발 노드와 그외 모든 노드 간의 최단 거리를 표현함

관련 문제

[백준, 최단경로] https://www.acmicpc.net/problem/1753

[백준, 최소비용 구하기] https://www.acmicpc.net/problem/1916

[백준, K번째 최단경로 찾기] https://www.acmicpc.net/problem/1854

 

 

 

728x90
'PS/알고리즘' 카테고리의 다른 글
  • 벨만-포드 (Bellman-Ford-moore)
  • 플로이드-워셜 (Floyd-warshall)
  • 위상 정렬 (Topology Sort)
  • 유니온 파인드 (Union Find)
0woy
0woy
Algorithm, CS, Web 등 배운 내용을 기록합니다.
  • 0woy
    0woy dev
    0woy
  • 전체
    오늘
    어제
  • 🌐 LANGUAGE
    • 분류 전체보기 (62) N
      • Backend (13) N
        • JAVA (6) N
        • DB (7) N
      • Frontend (15)
        • HTML5 (1)
        • CSS (1)
        • JS (4)
        • Vue 3 (9)
      • Computer Science (15)
        • 네트워크 (9)
        • 운영체제 (5)
      • PS (14) N
        • LeetCode (2)
        • Baekjoon (1)
        • Programmers (0)
        • 알고리즘 (11) N
      • Dev Trivia (5) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JS
    RDB
    BFS
    MySQL
    DNS
    dfs
    leetcode
    map
    select
    view
    상속
    JDBC
    함수
    Graph
    udp
    https
    javascript
    속성
    tcp
    java
    Props
    set
    HTTP
    Vue3
    dom
    shortestpath
    function
    list
    DP
    그래프
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
0woy
다익스트라 (Dijkstra)
상단으로

티스토리툴바