Python图论算法(三)——kruskal

edge = [[1,2,1],[1,2,3],[1,3,2],[2,3,1],[2,4,4],[3,4,2]]  
#这是用边集合表示的图
s = [[]]
n = 4
for i in range(n):
    s.append([i+1])
#print s
#compare方法是为了对边排序写的,作为参数传入sort,就可以排序了
def compare(a,b):
    if(a[2] > b[2]):
        return 1
    elif(a[2] < b[2]):
        return -1
    else:
        return 0

edge.sort(compare)
#这就是sort()的厉害之处       
for e in edge:
#    print s
    if s[e[0]] != s[e[1]]:
        print e
        for i in s[e[1]]:
            if(i not in s[e[0]]):
                s[e[0]].append(i)
            s[e[1]] = s[e[0]]
其中涉及到集合的合并和比较。
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值