코드 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))

    세 알고리즘 모두 구조가 매우 유사하다는 것을 알 수 있습니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.