zoukankan      html  css  js  c++  java
  • python dijkstra 最短路算法示意代码

    def dijkstra(graph, from_node, to_node):
        q, seen = [(0, from_node, [])], set()
        while q:
            cost, node, path = heappop(q)
            seen.add(node)
            path = path+[node]
            if node == to_node:
                return cost,path
            for adj_node, c in graph.get(node, {}).items():
                if adj_node not in seen:
                    heappush(q, (cost+c, adj_node, path))
        return -1,[]
    
    air_lines = {"1":{"2":2000, "3":2000, "4":4000, "5": 4500}, "2":{"5": 1000}, "3":{"4": 1000}, "4":{"5": 500}}
    
    print(dijkstra(air_lines, "1", "4"))
    print(dijkstra(air_lines, "1", "5"))
    print(dijkstra(air_lines, "4", "5"))
    print(dijkstra(air_lines, "5", "4"))
    print(dijkstra(air_lines, "1", "1"))
    print(dijkstra(air_lines, "10", "10"))
    
    """
    (3000, ['1', '3', '4'])
    (3000, ['1', '2', '5'])
    (500, ['4', '5'])
    (-1, [])
    (0, ['1'])
    (0, ['10'])
    """
    

      

  • 相关阅读:
    kvm-在virsh环境中改变CD媒介
    Mysql5.7.16安装过程
    Pycharm 2016专业版激活方式
    Tornado
    Django
    python day18
    python day16
    day15
    python day11
    B10-openstack高可用(t版)-nova计算节点节点集群部署
  • 原文地址:https://www.cnblogs.com/bonelee/p/11557040.html
Copyright © 2011-2022 走看看