顺晟科技
2021-08-28 09:41:24
177
我正在尝试为给定的图查找备用生成树。但是,我不明白如何在输出中一起使用多个解决方案。
对于给定的图形,在输出中,我得到0-2,权重为8。此外,1-3的权重为8。因此,我也想要一个单独的生成树,该解决方案的一部分包含1-3,给我2个单独的解决方案。
导入系统
类图():
def __init__(自身,顶点):
自我V=顶点
self.graph=[[范围内的列(顶点)为0]范围内的行(顶点)]
def printTree(自身,父级):
打印("边缘\t重量")
因为我在范围(1,自我。五):
打印(父[i],'-',I,' \t ',self.graph[i]父[i] ])
def minKey(自身、按键、设置):
min=sys.maxsize
对于范围内的五(自我。五):
如果键最小和设置[v]==假声:
最小=键[v]
最小索引=v
返回最小索引
#普里姆算法
def prim(self):
key=[sys.maxsize] * self .五#用于选择最小权重边的关键值
父母=[无] *自己。存储构造的山地时间的五#数组
关键点[0]=0 #制作关键点0,以便将此顶点作为个顶点拾取
Set=[False] * self .五#最初,MST集合中没有顶点
父节点[0]=-1 #个节点总是根节点
因为我在范围内(自我。五):
u=self.minKey(键,设置)
设置[u]=真
对于范围内的五(自我。五):
如果self.graph[u][v] 0和设置[v]==False并键入:
键[v]
父[v]=u
self.printTree(父级)
Prim=图表(7)
Prim.graph=[[0,4,8,0,0,0,0],
[4, 0, 9, 8, 10,0, 0],
[8, 9, 0, 2, 0, 1, 0],
[0, 8, 2, 0, 7, 9, 0],
[0, 10, 0, 7, 0, 5, 6],
[0, 0, 1, 9, 5, 0, 2],
[0, 0, 0, 0, 6, 2, 0]]
Prim.prim()
21
2022-04
28
2021-08
28
2021-08
28
2021-08
28
2021-08
28
2021-08