迪克斯特拉算法python实现

Posted masterhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迪克斯特拉算法python实现相关的知识,希望对你有一定的参考价值。

graph={}
graph[‘start‘]={} #定义图中的各个邻居节点
graph[‘start‘][‘a‘]=6
graph[‘start‘][‘b‘]=-1
graph[‘a‘]={}
graph[‘a‘][‘end‘]=1
graph[‘b‘]={}
graph[‘b‘][‘a‘]=3
graph[‘b‘][‘end‘]=5
graph[‘end‘]={}
cost={} #首尾已知点的代价
infinity=float(‘inf‘)
cost[‘a‘]=6
cost[‘b‘]=-1
cost[‘end‘]=infinity
parent={} #首尾已知点的负节点
parent[‘a‘]=‘start‘
parent[‘b‘]=‘start‘
parent[‘end‘]=None
#print(cost.keys())
process=[]
def select_lowest_cost(cost):
lowest_cost=float(‘inf‘)
lowest_cost_node=None
for node in cost.keys() :
if cost[node]<lowest_cost and node not in process: #保证所有的初始节点(第一步)都被考虑到
lowest_cost=cost[node]
lowest_cost_node=node
return lowest_cost_node
#print(select_lowest_cost(cost))
node=select_lowest_cost(cost)
while node is not None:
neighbor=graph[node]
costs=cost[node]
#neighbor[node]=graph[node].keys()
for i in neighbor.keys():
c=costs+neighbor[i]
if c<cost[i]:
cost[i]=c
parent[i]=node
process.append(node) #处理完的点表示该节点所有的邻居节点都考虑完全
node = select_lowest_cost(cost)
print(cost[‘end‘])














































以上是关于迪克斯特拉算法python实现的主要内容,如果未能解决你的问题,请参考以下文章

java利用迪克斯特拉(Dijkstra)算法求拓扑关系最短路径

java利用迪克斯特拉(Dijkstra)算法求拓扑关系最短路径

简谈迪克斯特拉算法

迪克斯特拉算法初探——图解算法

核心算法8最短路径问题

广度优先搜索(BreadthFirstSearch)& 迪克斯特拉算法 (Dijkstra's algorithm)