더북(TheBook)

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

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

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