|-带权图:用python内置数据类型dict存储带权图的边 |-最小生成树问题和切分定理 最小生成树:对于一个完全连通的具有v个结点的无向带权图,找到v-1条边使v个节点连通 且他们的权值之和最小 切分定理:给定任意切分 横切边中权值最小的边必然属于最小生成树 反证法可证 prim算法的第一个实现:Lazy Prim 时间复杂度O(ElogE) Prim算法优化 利用索引堆 时间复杂度O(ElogV) 对于边的判断次数减少
# 最小堆 class MinHeap: def __init__(self): self.__data = [0] self.__count = 0 # 构造函数 给定一个数组创建一个最小堆 时间复杂度O(n) def buildHeap(self, arr): n = len(arr) self.__count = n self.__data = [0] self.__data.extend(arr) # 从非叶子结点开始