18910140161

Prim的算法替代解决方案

顺晟科技

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()

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航