다익스트라 알고리즘 구현 코드
import heapq
def dijkstra(graph, start):
distances = { node : float('inf') for node in graph}
distances[start] = 0
queue = []
heapq.heappush(queue, [start, distances[start]])
while queue:
now, now_dist = heapq.heappop(queue)
if distances[now] < now_dist:
continue
for new, new_dist in graph[now]:
distance = now_dist + new_dist
if distance < distances[new]:
distances[new] = distance
heapq.heappush(queue, [new, distance])
return distances
graph = {
'A': {'B': 8, 'C': 1, 'D': 2},
'B': {},
'C': {'B': 5, 'D': 2},
'D': {'E': 3, 'F': 5},
'E': {'F': 1},
'F': {'A': 5}
}
print(dijkstra(graph, 'A'))
실행 결과
{'A': 0, 'B': 6, 'C': 1, 'D': 2, 'E': 5, 'F': 6}
참조
https://justkode.kr/algorithm/python-dijkstra/
Python으로 다익스트라(dijkstra) 알고리즘 구현하기
최단 경로 알고리즘은 지하철 노선도, 네비게이션 등 다방면에 사용되는 알고리즘입니다. 이번 시간에는 Python을 이용해 하나의 시작 정점으로 부터 모든 다른 정점까지의 최단 경로를 찾는 최
justkode.kr
'코딩테스트 > programmers (python)' 카테고리의 다른 글
Programmers / 2단계 / 롤케이크 자르기 / python (0) | 2024.03.19 |
---|---|
Programmers / 3단계 / 이중우선순위큐 / python / heapq (0) | 2024.03.18 |
Programmers / 3단계 / 단어 변환 / python / DFS/BFS (0) | 2024.03.16 |
Programmers / 3단계 / 정수 삼각형 / python / 동적계획법(Dynamic Programming) (1) | 2024.03.16 |
Programmers / 1단계 / 신고 결과 받기 / python / 2022 KAKAO BLIND RECRUITMENT (0) | 2024.03.13 |