python编码实现最小生成树_python实现最小生成树prim算法

声明:

0.本代码由本人根据概念自行完成  稳定性与效率未得到验证

1.prim算法实现较kruskal简单关键为点的结合与连线顺序

2.转载附原作者Id及作品链接

原代码如下:

import sys

MAX=sys.maxsize

graph=[[MAX,  10, MAX, MAX, MAX,  11, MAX, MAX, MAX],

[10,  MAX,  18, MAX, MAX, MAX,  16, MAX,  12],

[MAX,  18, MAX,  22, MAX, MAX, MAX, MAX,   8],

[MAX, MAX,  22, MAX,  20, MAX, MAX,  16,  21],

[MAX, MAX, MAX,  20, MAX,  26,   7,  19, MAX],

[11,  MAX, MAX, MAX,  26, MAX,  17, MAX, MAX],

[MAX,  16, MAX, MAX,   7,  17, MAX,  19, MAX],

[MAX, MAX, MAX,  16,  19, MAX,  19, MAX, MAX],

[MAX,  12,   8,  21, MAX, MAX, MAX, MAX, MAX]]

points=['A','B','C','D','E','F','G','H','I']

#点集合

tree_points=[]

#生成树点列表

start_point="A"

#起始点

tree_points.append(start_point)

while len(tree_points)!=len(points):

minimum_edge=MAX

for each_point in tree_points:

#遍历树

point_index=points.index(each_point)

edges=graph[point_index]

for i in range(len(edges)):

if points[i] not in tree_points:

#避免重复

if minimum_edge>edges[i]:

minimum_edge=edges[i]

index=i

tree_points.append(points[index])

print(tree_points)

代码至此结束

此栏目预测共享自学之乐,共勉求知之友,共塑网站和谐好学的形象。

欢迎大家在评论区发表合理的意见和指正。

如果觉得该栏目对您有帮助,望不吝点赞收藏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值