python实现Floyd算法

本文介绍了使用Python语言实现Floyd算法的过程,通过一个具体的图示例进行详细讲解,帮助读者理解该算法如何找到图中两点间的最短路径。参考了博主@Angel_Kitty的图文详解。
摘要由CSDN通过智能技术生成
'''这两天看了不少讲Floyd算法的文章,大概理解了其中的思想
然后自己动手,从图和节点类的定义开始,整个自己写了一下
和其他博主的实现方式上会有一些差别,注释我都写上了,有问题期待交流'''

class Vertex():
    def __init__(self,key):
        self.id = key #存储节点名称
        self.connectedTo = {} #存储相邻节点信息

    def addNeighbor(self,nbr,weight = 0):
        self.connectedTo[nbr] = weight #添加相邻节点
        #nbr.connectedTo[self] = weight #实现双向互通

    def getConnections(self):
        return self.connectedTo.keys() #返回所有相邻节点的信息

    def getId(self):
        return self.id #返回当前节点的名称

    def getWeight(self,nbr):
        if nbr not in self.connectedTo.keys() and nbr!=self:
            return 99999
        elif nbr == self:
            return 0
        else:
            return self.connectedTo[nbr]  #返回指定相邻节点的权重


    def __str__(self):
        return str(self.getId()) + 'connected to' +str([x.getId() for x in self.connectedTo.keys()]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值