[Algorithm] 다익스트라 (dijkstra)

2023. 10. 25. 14:18·코딩테스트/Python
목차
  1. 다익스트라 알고리즘
728x90
반응형

출처 - 위키백과

다익스트라 알고리즘

  • 한 지점에서, 다른 모든 지점까지의 최단 경로를 찾는 알고리즘
  • GPS, 라우팅 프로토콜 등에서 사용된다.
  • A -> C 거리가 A -> B -> C 거리보다 짧다면 A에서 C까지의 최단 경로를 수정하는 방식이다.

heapq를 활용한 구현

  • 1~2 : 모든 정점까지의 거리를 INF로 초기화 하고, 출발점(start) 자기 자신까지의 거리는 0으로 초기화한다.
  • 3 : 거쳐가는 거리보다 바로 가는 거리가 짧다면 업데이트 하지 않는다.
  • 4 : 거쳐가는 거리가 더 짧은 경우, 거리를 업데이트 한다.
  • queue에 (거리, 도착 정점) 순으로 넣어야 거리가 짧은 정점부터 확인할 수 있다.
def dijkstra(start):
    distance = [int(1e9)] * (N+1) # 1
    distance[start] = 0 # 2
    q = []
    heapq.heappush(q, (0, start))
    while q:
        cost, now = heapq.heappop(q)
        if distance[now] < cost: # 3
            continue
        for i in graph[now]:
            if cost + i[1] < distance[i[0]]:
                distance[i[0]] = cost + i[1] # 4
                heapq.heappush(q, (cost+i[1], i[0]))
    return distance

 

저작자표시 (새창열림)

'코딩테스트 > Python' 카테고리의 다른 글

[LeetCode] 189. Rotate Array  (1) 2023.11.28
[Baekjoon] 1167. 트리의 지름  (1) 2023.10.27
구간 합 (Prefix Sum)  (0) 2023.07.04
[Data Structure] 트리  (0) 2023.03.30
GCD(Great Common Divisior), LCM(Least Common Multiple)  (2) 2023.03.24
  1. 다익스트라 알고리즘
'코딩테스트/Python' 카테고리의 다른 글
  • [LeetCode] 189. Rotate Array
  • [Baekjoon] 1167. 트리의 지름
  • 구간 합 (Prefix Sum)
  • [Data Structure] 트리
swwho
swwho
일상을 데이터화하다
  • swwho
    하루한장
    swwho
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • ML_DL (39)
        • MUJAKJUNG (무작정 시리즈) (18)
        • 딥러닝 공부하기 (21)
      • 데이터사이언스 (1)
        • EDA (1)
        • 데이터과학을 위한 통계 (0)
      • 데이터엔지니어링 (2)
      • 논문리뷰 (2)
        • Computer Vision (2)
      • Python 활용하기 (12)
      • 코딩테스트 (127)
        • Python (109)
        • MySQL (14)
      • Git (3)
      • MySQL 활용하기 (0)
      • 일상 이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
swwho
[Algorithm] 다익스트라 (dijkstra)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.