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 decrease_key_test_2(): heap = MinHeap([10, 20, 25, 22, 30, 25, 28], already_heap=True) heap.decrease_key(6, 0) print(heap)
def decrease_key_test_3(): heap = MinHeap([10, 20, 25, 22, 30, 25, 28], already_heap=True) heap.decrease_key(0, 11) # Supposed to throw an error print(heap)
def decrease_key_test_1(): heap = MinHeap([10, 20, 25, 22, 30, 25, 28], already_heap=True) for i in range(7): heap.decrease_key(i, heap.arr[i] - 1) print(heap)