python 迪杰斯特拉算法

python语言实现  最短路径算法  Dijsktra算法:

infinity=float('inf')
graph = {'a': {'fin': 1}, 'b': {'a': 3, 'fin': 5}, 'start': {'a': 6, 'b': 2}}
costs ={'a':6,'b':2,'fin':infinity}
parents={'a':'start','b':'start','fin':None}
processed=[]


def find_lowest_cost_node(costs):
    lowest_cost=float('inf')
    lowest_cost_node = None
    for node in costs:
        cost=costs[node]
        if cost < lowest_cost and node not in processed:
            lowest_cost=cost
            lowest_cost_node=node
    return lowest_cost_node

node=find_lowest_cost_node(costs)

while node is not None:
    cost=costs[node]
    neighbors=graph[node]
    for n in neighbors.keys():
        new_cost=cost+neighbors[n]
        if costs[n]>new_cost:
            costs[n]=new_cost
            parents[n]=node
    processed.append(node)
    node=find_lowest_cost_node(costs)


你可能感兴趣的:(算法)