def mst_prim(self): root.key = self.nodes[0] Q = MinHeap(self.nodes) while not Q.is_empty(): u = Q.extract_min() for v in self.adj_list[u]: if v in Q and self.weight[(u, v)] < v.key: v.parent = u Q.decrease_key(v.key, self.weight[(u, v)])
def extract_min_test_2(): heap = MinHeap([90, 90, 90], already_heap=True) print(f"Original: {heap}") for i in range(3): print(heap.extract_min(), heap)
def extract_min_test_3(): heap = MinHeap([], already_heap=True) for i in range(3): print(heap.extract_min(), heap)
def extract_min_test_1(): heap = MinHeap([10, 20, 25, 22, 30, 25, 28], already_heap=True) print(f"Original: {heap}") for i in range(1, 8): print(heap.extract_min(), heap)