Python 最小生成

这是一个Python 编写的最小生成树算法的程序。


from pylab import *

Inf = 65535
vexs = array([[Inf, 3, 4, 7, Inf, Inf, Inf],
              [3, Inf, 3, 2, 4, Inf, Inf],
              [4, 3, Inf, Inf, 5, 7, Inf],
              [7, 2, Inf, Inf, 2, Inf, 6],
              [Inf, 4, 5, 2, Inf, 1, 4],
              [Inf, Inf, 7, Inf, 1, Inf, 2],
              [Inf, Inf, Inf, 6, 4, 2, Inf]])

result_from = []
result_to = []
result_link = []
p = [0]
tb = range(1, len(vexs), 1)
tb = list(tb)
cont=0
while len(result_from) != len(vexs) - 1:
    temp = []
    for i in p:
        for j in tb:
            temp.append(vexs[i, j])
    d = min(temp)
    for i,e in enumerate(p):
        for j,f in enumerate(tb):
            if vexs[e, f] == d:
                jb = i
                kb = j
                break
    j = p[jb]
    k = tb[kb]
    result_from.append(j)
    result_to.append(k)
    result_link.append(d)
    p.append(k)
    for i in range(len(tb)):
        if tb[i] == k:
            tb.remove(k)
            break
print('from node',result_from)
print('to node',result_to)
print('length',result_link)
exit(0)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值