假设要在n个城市之间建立通信网络,则连通n个城市至少需要n-1条线路。n个城市之间,最多可能设置n(n-1)/2条线路。如何在这些可能的线路中选择n-1条,以便在最节省费用的前提下建立该通信网络?
Prim算法时间复杂度与图中的边数无关,适合稠密图
Prim算法是从图的顶点出发,紧扣最小生成树性质,把顶点集分成两个互不相交的集合,贪心选择连接两个集合最小权的边,判断该边的两个端点是否在一个连通分支,若在,则舍弃该边。
def Prim_mst(graph,vertexs):
ulist=[]
ulist.append(vertexs[0])
tree_list=[]
closest=[]
lowcost=[]
#最小权值,-1表示i已经在生成树集合中
lowcost.append(-1)
closest.append(0)
n=len(vertexs)
for i in range(1,n):
lowcost.append(graph[0][i