Python实现迪杰斯特拉算法并生成最短路径的示例代码
作者:会武术之白猫 时间:2023-06-05 21:50:10
def Dijkstra(network,s,d):#迪杰斯特拉算法算s-d的最短路径,并返回该路径和代价
print("Start Dijstra Path……")
path=[]#s-d的最短路径
n=len(network)#邻接矩阵维度,即节点个数
fmax=999
w=[[0 for i in range(n)]for j in range(n)]#邻接矩阵转化成维度矩阵,即0→max
book=[0 for i in range(n)]#是否已经是最小的标记列表
dis=[fmax for i in range(n)]#s到其他节点的最小距离
book[s-1]=1#节点编号从1开始,列表序号从0开始
midpath=[-1 for i in range(n)]#上一跳列表
for i in range(n):
for j in range(n):
if network[i][j]!=0:
w[i][j]=network[i][j]#0→max
else:
w[i][j]=fmax
if i==s-1 and network[i][j]!=0:#直连的节点最小距离就是network[i][j]
dis[j]=network[i][j]
for i in range(n-1):#n-1次遍历,除了s节点
min=fmax
for j in range(n):
if book[j]==0 and dis[j]<min:#如果未遍历且距离最小
min=dis[j]
u=j
book[u]=1
for v in range(n):#u直连的节点遍历一遍
if dis[v]>dis[u]+w[u][v]:
dis[v]=dis[u]+w[u][v]
midpath[v]=u+1#上一跳更新
j=d-1#j是序号
path.append(d)#因为存储的是上一跳,所以先加入目的节点d,最后倒置
while(midpath[j]!=-1):
path.append(midpath[j])
j=midpath[j]-1
path.append(s)
path.reverse()#倒置列表
print(path)
#print(midpath)
print(dis)
#return path
network=[[0,1,0,2,0,0],
[1,0,2,4,3,0],
[0,2,0,0,1,4],
[2,4,0,0,6,0],
[0,3,1,6,0,2],
[0,0,4,0,2,0]]
Dijkstra(network,1,6)
来源:https://www.cnblogs.com/ljy1227476113/p/11720119.html
标签:Python,迪杰斯特拉算法
0
投稿
猜你喜欢
MySQL最常见的操作语句小结
2023-12-27 19:33:56
python pygame 愤怒的小鸟游戏示例代码
2023-11-14 17:00:48
python 实现批量替换文本中的某部分内容
2021-05-19 18:06:42
vuejs使用axios异步访问时用get和post的实例讲解
2024-05-02 16:56:49
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2024-01-15 03:26:34
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2023-09-09 23:41:04
[组图]手把手教你制作ASP留言本
2007-09-22 09:32:00
Vue2.0在IE11版本浏览器中的兼容性问题
2024-04-29 13:08:55
Oracle删除字段中的空格、回车及指定字符的实例代码
2024-01-18 18:10:07
Python爬虫框架Scrapy安装使用步骤
2022-02-23 13:49:09
用Python实现斐波那契(Fibonacci)函数
2023-06-29 19:59:07
SQL Server 2005数据库中表的递归查询
2009-01-08 16:08:00
Python制作豆瓣图片的爬虫
2021-11-24 05:53:05
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
2022-01-24 10:29:46
在layui下对元素进行事件绑定的实例
2024-04-22 22:17:27
教你用Type Hint提高Python程序开发效率
2023-10-21 03:42:24
教你用Python写一个植物大战僵尸小游戏
2021-07-19 22:59:37
Mysql中悲观锁与乐观锁应用介绍
2024-01-15 08:26:30
基于Tensorflow使用CPU而不用GPU问题的解决
2022-01-01 22:53:08
python3.8下载及安装步骤详解
2023-11-19 18:47:02