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=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)

以上就是Python实现迪杰斯特拉算法并生成最短路径的示例代码的详细内容,更多关于Python实现迪杰斯特拉算法的资料请关注聚米学院其它相关文章!

python写算法求最短路径,Python实现迪杰斯特拉算法并生成最短路径的示例代码相关推荐

  1. 图的应用---最短路径问题 用迪杰斯特拉算法解决 《地铁换乘问题》

    图的应用-最短路径问题 用迪杰斯特拉算法解决 <地铁换乘问题> 代码是在我学习的过程中完成的,也许会有问题,希望大家批评指正. 题目: 描述:已知2条地铁线路,其中A为环线,B为东西向线路 ...

  2. 图的最短路径之(迪杰斯特拉算法)python实现

    前面我们已经了解到了无环有向图怎样求关键路径的方法,今天我们来看看无向图怎样求最短路径,这在实际应用过程中的作用很大,不如交通路线图,从出发点到终点,走哪条路用时最短,或者花费最少等问题. 我们先来看 ...

  3. 单源最短路径-Dijkstra(迪杰斯特拉算法)

    迪杰斯特拉算法时间复杂度为O(n^2),其中n为顶点个数. 该算法用于求单源最短路径.并且图中的边不允许带负权值. #include <iostream> using namespace ...

  4. 最短路径之Dijkstra(迪杰斯特拉)算法(无向图)

    简介      Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.由for循环可知,其时间 ...

  5. 【算法杂谈】LJX的迪杰斯特拉算法报告

    迪杰斯特拉(di jie qi)算法 这里有一张图: 假设要求从1号节点到5号节点的最短路.那么根据迪杰斯特拉算法的思想,我们先看: 节点1,从节点1出发的一共有3条路,分别是1-6.1-3.1-2. ...

  6. hdu3790最短路径问题(迪杰斯特拉算法+详解+代码)

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  7. 《算法导论》24.3-Dijkstra(迪杰斯特拉)算法(含C++代码)

    一.相关含义 1.Dijkstra算法在运行过程中维持的关键信息是一组结点集合S.从源结点s到该集合中每个结点之间的最短路径已经被找到.算法重复从结点集V- S中选择最短路径估计最小的结点u,将u加入 ...

  8. C++迪杰斯特拉算法求最短路径

    一:算法历史 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以 ...

  9. 迪杰斯特拉算法python实现

    回顾下最短路径的地杰斯特拉算法 迪杰斯特拉算法是求从某一个起点到其余所有结点的最短路径,是一对多的映射关系,是一种贪婪算法 示例: 算法实现流程思路: 迪杰斯特拉算法每次只找离起点最近的一个结点,并将 ...

  10. dijkstra算法_最短路径问题——迪杰斯特拉算法(Dijkstra)

    假期过长,导致停更了好长时间,复习一道算法题找找感觉. 前段时间看到一篇文章,里面提到了统治世界的十大算法,其中之一就是迪杰斯特拉算法(Dijkstra),该算法主要解决的"最短路径&quo ...

最新文章

  1. Microsoft Store无法下载应用 Windows update服务无法启用,错误5:拒绝访问 的解决方法。
  2. AD20使用中文菜单
  3. 05CSS的引入方式
  4. python测试rabbitmq的消息收发
  5. mysql 分组取最新的一条记录(整条记录)
  6. linux快速php,Linux 下的这些高效指令,是你快速学习的神器
  7. Kotlin-Note
  8. kafka中处理超大消息的一些考虑
  9. myisam为什么比innodb查询快_mysql存储引擎之MyISAM 和 InnoDB的比较
  10. python无法调用安装的包_无法在Windows 10上使用python2.7/MINGW安装pyslalib软件包
  11. 【QT】QT字体详解
  12. 人大金仓数据库使用uuid
  13. 游戏软件测试学什么条件,游戏测试工程师岗位的工作内容
  14. 国内6大常见免费数据采集器特点分析
  15. Echarts 实现树状图的展示与编辑示例
  16. 赛门铁克symantec的安装与卸载-附下载地址(本人亲测)
  17. SDN 交换机迁移1
  18. via浏览器皮肤html,Via浏览器 v4.2.1 身材小巧功能全面
  19. BGP------BGP工作原理、BGP属性及选路原则
  20. linux cma内存,【原创】(十六)Linux内存管理之CMA,

热门文章

  1. Win10如何屏蔽删除电脑右下角的广告
  2. MINA核心结构和处理消息的逻辑流程
  3. 编程语言_如何正确地学习编程语言
  4. live555推流rtsp_Hi3518 RTSP推流
  5. datagridview 手动添加的行如何进行重载_【厚积薄发】如何规划UI图标图集
  6. 怎么查看服务器系统内存,怎么查看服务器系统内存
  7. LeetCode算法入门- Longest Substring Without Repeating Characters-day4
  8. mysql显示表已存在_MySQL数据库与数据表的相关操作
  9. 北京师范大学新生入学计算机考试内容,北京师范大学
  10. java图片资源存放_Java编程中图片文件放哪