最小生成树问题
创建矩阵
import copy
MAXV=100 #表示最多顶点个数capacity
INF=0x3f3f3f3f #表示∞,即两点无连接
class MatchGraph: #构建图邻接矩阵类,调用方法是
def __init__(self,n=0,e=0): #构造方法,n表示点node,e表示边edge
self.edges=[] #邻接矩阵数组,暂时未用
self.vexs=[] #存放顶点信息,暂时未用
self.n=n #顶点数
self.e=e #边数
def CreateMatchGraph(self,a,n,e): #通过数组a、n和e建立图的邻接矩阵
self.n=n #置顶点数和边数
self.e=e
self.edges=copy.deepcopy(a) #深拷贝,a是列表形式的矩阵数据
def outputMatchGraph(self): #输出图
for i in range(self.n): #行数
for j in range(self.n): #列数
if self.edges[i][j]==INF:
print("%4s"%("∞"),end=' ')
else:
print("%5d" %(self.edges[i][j]),end=' ')
print()#换行输出
if __name__ == '__main__':
g=MatchGraph()
n,e=5,5
a=[ [0,8,INF,5,INF],
[INF,0,3,INF,INF],
[INF,INF,0,INF,6],
[INF,INF,9,0,INF],
[INF,INF,INF,INF,0]]
g.CreateMatchGraph(a,n,e)
g.outputMatchGraph()#输出图像
prim算法
from MatchGraph import MatchGraph,INF,MAXV
import time
def Prim(g,v):