반응형
최소힙을 이용한 다익스트라. 기본으로는 start부터 모든 지점까지의 최소거리가 담긴 list를 반환한다.
import heapq
import math
def dijkstra(nodes, start):
N = len(nodes)
d = [math.inf] * (N+1)
q = []
qlen = 1
d[start] = 0
heapq.heappush(q, (d[start], start))
while qlen > 0:
tmp = heapq.heappop(q)
qlen -= 1
if d[tmp[1]] < tmp[0]:
continue
for i in nodes[tmp[1]]:
dtmp = d[tmp[1]] + i[1]
if d[i[0]] > dtmp:
d[i[0]] = dtmp
heapq.heappush(q, (dtmp, i[0]))
qlen += 1
return d
반응형
'알고리즘창고' 카테고리의 다른 글
[코드조각] 플로이드-워셜 (0) | 2021.06.11 |
---|---|
[C] 보고 정렬 (bogo sort, stupid sort) (0) | 2018.07.13 |
[C] 버블 정렬 (bubble sort) (0) | 2018.07.12 |