微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用BFS

如何解决使用BFS

我有BFS的实现,但是它只存储一个路径。如何修改代码以存储从起点到节点再到终点的所有路径。有什么想法吗?

    def BFS(G,user1,user2):
        path = []
        for v in G:
            v.setdistance(0)
            v.setPred(None)
        vertQueue = Queue()
        vertQueue.enqueue(G.getVertex(user1))
        while vertQueue.size() > 0:
            currentVert = vertQueue.dequeue()
            for nbr in currentVert.getConnections():
                if nbr.getColor() == 'white':
                    nbr.setColor('gray')
                    nbr.setdistance(currentVert.getdistance() + 1)
                    nbr.setPred(currentVert)
                    vertQueue.enqueue(nbr)
                currentVert.setColor('black')
        prev = G.getVertex(user2)
        while prev.getPred():
            path.append(prev.getPred().getId())
            prev = prev.getPred()
        path = path[::-1]
        path.append(user2)
        return ' -> '.join(path)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。