求最小生成树:
给出无向连通带权图(V,E,W),选择边,不形成回路,边数达到n-1停止
prim算法:
#coding=utf-8
'''
prim:
初始化选择的点集为S=[0],不断选择S与V-S集合的最短边e
'''
def next_vertex(S,C):
n = len(C)
V = [i for i in range(n)]
rest_V = [] #未连接的vertex
for i in range(n):
if V[i] not in S:
rest_V.append(V[i])
min = max(C)[0]
for u in S:
for v in rest_V:
if C[u][v]<min:
min = C[u][v]
index = v
return index
def prim(C):
n = len(C)
S = [0]
for i in range(1,n):
S.append(next_vertex(S, C))
return S