코드 14-6은 프림 알고리즘입니다.
코드 14- 6
def MST_prim(self):
h = MinHeap()
h.push(Element(0, 0, None))
while not h.is_empty():
elem_v = h.pop()
adj_v = self.adj_list[v]
for u, w_u_v in adj_v:
if u not in TV and w_u_v < w_list[u]:
h.decrease_weight(Element(u, w_u_v, v))
코드 14-7은 데이크스트라 알고리즘입니다.
코드 14-7
def dijkstra(self, s):
pq = MinPriorityQueue()
pq.push((0, s))
while len(S) < self.vertex_num:
d, v = pq.pop()
adj_v = self.adjacent_set(v)
for u, w_u_v in adj_v:
if u not in S and distance[u] > distance[v]+w_u_v:
pq.push((distance[u], u))
세 알고리즘 모두 구조가 매우 유사하다는 것을 알 수 있습니다.