首页 > 编程语言 > 详细

bellman_ford算法 python实现

时间:2014-04-01 22:46:42      阅读:908      评论:0      收藏:0      [点我收藏+]
def bellman_ford( graph, source ):
    
    distance = {}
    parent = {}
    
    for node in graph:
        distance[node] = float( ‘Inf‘ )
        parent[node] = None
    distance[source] = 0

    for i in range( len( graph ) - 1 ):
        for from_node in graph:
            for to_node in graph[from_node]:
                if distance[to_node] > graph[from_node][to_node] + distance[from_node]:
                    distance[to_node] = graph[from_node][to_node] + distance[from_node]
                    parent[to_node] = from_node

    for from_node in graph:
        for to_node in graph[from_node]:
            if distance[to_node] > distance[from_node] + graph[from_node][to_node]:
                return None, None

    return distance, parent

def test():
    graph = {
        ‘a‘: {‘b‘: -1, ‘c‘:  4},
        ‘b‘: {‘c‘:  3, ‘d‘:  2, ‘e‘:  2},
        ‘c‘: {},
        ‘d‘: {‘b‘:  1, ‘c‘:  5},
        ‘e‘: {‘d‘: -3}
    }
    distance, parent = bellman_ford( graph, ‘a‘ )
    print distance
    print parent

if __name__ == ‘__main__‘:
    test()

bellman_ford算法 python实现,布布扣,bubuko.com

bellman_ford算法 python实现

原文:http://blog.csdn.net/pandora_madara/article/details/22752333

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!