千家信息网

python中怎么实现一个Dijkstra算法

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,python中怎么实现一个Dijkstra算法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。"""Dijkstra algorith
千家信息网最后更新 2026年11月02日python中怎么实现一个Dijkstra算法

python中怎么实现一个Dijkstra算法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。


"""

Dijkstra algorithm

graphdict={"A":[("B",6),("C",3)], "B":[("C",2),("D",5)],"C":[("B",2),("D",3),("E",4)],\

"D":[("B",5),("C",3),("E",2),("F",3)],"E":[("C",4),("D",2),("F",5)],"F":[("D",3),"(E",5)]})

assert: start node must be zero in-degree

"""


def Dijkstra(startNode, endNode, graphdict=None):

S=[startNode]

V=[]

for node in graphdict.keys():

if node !=startNode:

V.append(node)

#distance dict from startNode

dist={}

for node in V:

dist[node]=float('Inf')


while len(V)>0:

center = S[-1] # get final node for S as the new center node

minval = ("None",float("Inf"))

for node,d in graphdict[center]:

if node not in V:

continue

#following is the key logic.If S length is bigger than 1,need to get the final ele of S, which is the center point in current

#iterator, and distance between start node and center node is startToCenterDist; d is distance between node

# among out-degree for center point; dist[node] is previous distance to start node, possibly Inf or a updated value

# so if startToCenterDist+d is less than dist[node], then it shows we find a shorter distance.

if len(S)==1:

dist[node] = d

else:

startToCenterDist = dist[center]

if startToCenterDist + d < dist[node]:

dist[node] = startToCenterDist + d

#this is the method to find a new center node and

# it's the minimum distance among out-degree nodes for center node

if d < minval[1]:

minval = (node,d)

V.remove(minval[0])

S.append(minval[0]) # append node with min val

return dist


03

-

测试

求出以上图中,从A到各个节点的最短路径:

shortestRoad = Dijkstra("A","F",graphdict={"A":[("B",6),("C",3)], "B":[("C",2),("D",5)],\

"C":[("B",2),("D",3),("E",4)],\

"D":[("B",5),("C",3),("E",2),("F",3)],\

"E":[("C",4),("D",2),("F",5)],"F":[("D",3),("E",5)]})

mystr = "shortest distance from A begins to "

for key,shortest in shortestRoad.items():

print(mystr+ str(key) +" is: " + str(shortest) )

打印结果如下:

shortest distance from A begins to B is: 5

shortest distance from A begins to C is: 3

shortest distance from A begins to D is: 6

shortest distance from A begins to E is: 7

shortest distance from A begins to F is: 9

关于python中怎么实现一个Dijkstra算法问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

问题 算法 更多 帮助 解答 易行 简单易行 内容 小伙 小伙伴 方法 知识 篇文章 结果 节点 行业 资讯 资讯频道 频道 图中 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 有格互联网科技 华服互联网科技靠谱吗 高科技互联网 互联网科技工作委员会毛军 科技金融是不是互联网金融 深圳互联网络科技有限公司 期待互联网科技 沃里互联网科技 碳银互联网科技有限公司 茂名市互联网科技产业园 贵州叶脉互联网科技有限公司所属行业 广州市恰铎互联网科技有限公司 健康食品互联网创新科技园项目 晋城互联网科技 35岁以上互联网科技行业 宁波跨境商互联网科技有限公司 西安左小互联网科技有限公司 恒生互联网科技趋势 宁波允成互联网科技有限公司 互联网企业和网络科技有限公司 互联网中国科技 互联网科技logo设计 沃里互联网科技 云创客互联网科技公司 团飞科技与伯堂互联网服务平台 新兴科技互联网创新大赛颁奖典礼 用友工业互联网科技发展 中和天地互联网科技有限公司 美国互联网科技公司 互联网科技大会大佬
0