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

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实现迪杰斯特拉算法的资料请关注聚米学院其它相关文章!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无法检查指定的位置是否位于cfs上_打印机知识普及:七大原因导致的打印机无法打印及解决方法...

打印机无法打印的原因有很多,如果我们遇到打印机无法打印应该首先从简单到复杂入手。首先必须排除一些最简单的问题,比如打印机是否正常安装。另外打印机内部是不是已经放置有墨盒以及打印纸等,这些基本问题必须排除,另外还有一个…

Spring基于Annotation实现事务管理

在 Spring 中,除了使用基于 XML 的方式可以实现声明式事务管理以外,还可以通过 Annotation 注解的方式实现声明式事务管理。 使用 Annotation 的方式非常简单,只需要在项目中做两件事,具体如下。 1 在 Spring 容器中注册驱动&…

python扩展,用python扩展列

我试图在python中扩展数据帧的某一列。在r中,我将使用这个函数:在python中,我发现df.pivot_table(),但我刚发现一个错误:pandas.pivot_table(df, values Value, index[Day, Money, Product],columns[Account])^更新结果:数据帧没有更改。它只返回相同的数据文件而不进行扩展。考…

基于matlab的pcm系统仿真_深入理解基于RISC-V ISS Spike的仿真系统:探索Spike,pk和fesrv...

Spike, the RISC-V ISA Simulator, implements a functional model of one or more RISC-V processors.Spike is named after the golden spike used to celebrate the completion of the US transcontinental railway.一些同学初接触RISC-V,总逃脱不了被Rocketchip…

think php 子查询,使用thinkPHP怎么实现一个子查询语句

使用thinkPHP怎么实现一个子查询语句发布时间:2021-01-30 13:31:08来源:亿速云阅读:85作者:Leah这篇文章给大家介绍使用thinkPHP怎么实现一个子查询语句,内容非常详细,感兴趣的小伙伴们可以参考借鉴&#x…

python的三个特性_Python3.9的7个特性

作者|PADHMA编译|VK来源|Analytics Vidhya介绍正如著名作家韦恩•W•戴尔所说,改变你看待事物的方式 你所看待的事物也会改变当Python的新版本问世时,许多人担心向后兼容性问题和其他问题。但是如果你喜欢Python,你一定会对新更新中发布的特性…

C++类的成员变量和成员函数

类可以看做是一种数据类型,它类似于普通的数据类型,但是又有别于普通的数据类型。类这种数据类型是一个包含成员变量和成员函数的集合。 类的成员变量和普通变量一样,也有数据类型和名称,占用固定长度的内存。但是,在…

单机安装oracle,单机安装oracle系统

一、安装oracle6.9操作系统1、硬盘划分为30G(以下分区皆强制为主分区)/boot 200Mswap 4G/ 剩余全部空间安装下一步的步骤就不说了勾选图形选项基本系统--》备份客户端,大系统性能,存储工具,安全工具,性能工具,目录客户…

redis timeout设置多少合适_热水器怎么调温度?一般热水器温度设置多少度比较合适?...

对于热水器的温度设置您知道怎么操作吗?一般情况下电热水器设置多少度比较合适呢?今天蜜罐蚁装修网小编给大家介绍下热水器如何调节温度,以及热水器调节温度在什么范围比较合适。下面请看小编以美的电热水器某个型号产品举例图文讲解热水器调…

C++类成员的访问权限以及类的封装

C通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。所谓访问权限,就是你能不能使用该类中的成员。 C 中的 public、private、protected 只能修饰…

oracle数据库12下载地址,Oracle 数据库和补丁下载地址 12.1.0.2 11.2.0.4 11.2.0.1

Oracle 数据库和补丁下载地址 12.1.0.2 11.2.0.4 11.2.0.1 AIX Linux Windows平台AIX 12.1.0.2 DATABASE DB 数据库软件介质下载地址:ftp://104.236.52.210/aix.ppc64_12102_database_1of2.zipftp://104.236.52.210/aix.ppc64_12102_database_2of2.zipAIX 11.2.0.4…

用swing设计一个打地鼠小游戏_这7个风靡欧美的英语小游戏,学会胜过刷100道题!...

精彩导读小编为大家搜罗了一些在国外家喻户晓的语言类小游戏。好的方法胜过刷上100道题,真正让孩子觉得好玩,教学才会事半功倍!01Would You Rather...最近牛津大学的面试考题惊天地爆出了一题:你想要变成吸血鬼还是想要变成僵尸&a…

oracle数据库9i安装,Oracle 9i数据库服务器的安装和辅助软件安装教程

安装数据库服务器以Oracle 9i数据库服务器软件的安装过程为例,介绍数据库服务器的安装过程。14.3.1 安装数据库服务器系统环境数据库服务器安装之前,一般都需要检测系统安装环境,以避免系统不支持、内存不够、硬盘空间不足等情况发生。下面从…

python计算排队时间_Python(pdb)-排队执行命令

我正在实现一个“断点”系统以用于我的Python开发,该系统将允许我调用一个实质上调用pdb.set_trace()的函数.我想实现的某些功能要求我在set_trace上下文中时通过代码控制pdb.例:disableList []def breakpoint(nameNone):def d():disableList.append(name)#****#is…

oracle数据库各组件介绍,Oracle 数据库 组件相关说明【第一部分】

参考MOS文档:Information On Installed Database Components and Schemas (文档 ID 472937.1)Oracle 组件可以通过下面的SQL查看,这是我的一个生产库的组件情况,我当时是都部署了:SQL> col COMP_NAME for a50SQL> select comp_id,comp_…

oracle 触发器 行级,oracle的行级触发器使用

行级触发器:当触发器被触发时,要使用被插入、更新或删除的记录中的列值,有时要使用操作前、后列的值.:NEW 修饰符访问操作完成后列的值:OLD 修饰符访问操作完成前列的值例1: 建立一个触发器, 当职工表 emp 表被删除一条记录时,把被…

python include的功能_在Python的Config中增加Include功能

在python中配置文件分析我一般都用configparser。很好,符合我的一贯需求。文本格式、简单、内置。如:[db]hostlocalhostuserdlpasswd12345678[other]因为小程序较多,分别在不同地方,但是都有些共同的配置(如DB的配置)。如果能在配置文件中inc…

oracle的空闲等待事件,Oracle 常见的33个等待事件详解

一. 等待事件的相关知识:1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件。1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件。2). 非空闲等待…

python wechatpay微信支付回调_【微信支付】JSAPI支付开发者文档

XXE漏洞需要您在回调处理代码里面解析XML之前,加入禁用实体解析的代码,不同语言设置的内容不同,下面提供了几种主流开发语言的设置指引(您可以根据关键字找到xml解析组件采取对应方法升级):【PHP】 解析XML代码前加入:…

如何查看oracle压力,oracle压力测试之orabm

数据库压力测试一、用orabm测试数据库CPUOrabm通过在用户指定的并发下运行指定数量的事务来测试系统性能.它主要测试数据库服务器的CPU性能和内存。orabm实际上是一堆sql的集合。orabm可以用在linux/windows/solaris下使用。orabm不一定需要运行在数据库所在服务器上&#xff0…