给出的图G赋权连接矩阵为:

adjacency_matrix

= [ [0, 1, 10, -1, -1, 2],

[10, 0, 1, -1, -1, -1],

[1, 10, 0, -1, -1, -1],

[-1, -1, 2, 0, 1, 10],

[-1, -1, -1, 10, 0, 1],

[-1, -1, -1, 1, 10, 0]]

import sys

max = sys.maxsize

vertices_number = 6

adjacency_matrix = [

[0, 1, 10, -1, -1, 2],

[10, 0, 1, -1, -1, -1],

[1, 10, 0, -1, -1, -1],

[-1, -1, 2, 0, 1, 10],

[-1, -1, -1, 10, 0, 1],

[-1, -1, -1, 1, 10, 0]]

start = []

dest = ["2", "5"]

key = []

def init_keys(s: int):

global key

key = [ max ] * vertices_number

key[s] = 0

def dijkstra(from_vertex, dest_vertex):

fid = int(from_vertex) - 1

tid = int(dest_vertex) - 1

init_keys(fid)

rel = [fid]

min_vertex = fid

hop_path = {}

while len(rel) <= vertices_number and min_vertex != tid:

for i in range(vertices_number):

if i != min_vertex and i not in rel and \

adjacency_matrix[min_vertex][i] > 0 \

and key[i] > adjacency_matrix[min_vertex][i]:

key[i] = key[min_vertex] + adjacency_matrix[min_vertex][i]

hop_path.update({i + 1: {"from": min_vertex + 1, "cost": adjacency_matrix[min_vertex][i]}})

if min_vertex not in rel:

rel.append(min_vertex)

min_vertex = tid

for i in range(vertices_number):

if i not in rel and key[i] < key[min_vertex]:

min_vertex = i

if len(hop_path) == 0 or int(dest_vertex) not in hop_path:

return -1, -1

else:

next_hop = int(dest_vertex)

path_str = dest_vertex

while hop_path[next_hop]["from"] != int(from_vertex):

cost = hop_path[next_hop]["cost"]

next_hop = hop_path[next_hop]["from"]

path_str = "{} -({})-> {}".format(str(next_hop), cost ,path_str)

path_str = "{} -({})-> {}".format(str(hop_path[next_hop]["from"]), hop_path[next_hop]["cost"], path_str)

return key[tid], path_str

def find_shortest_router():

for s in start:

print("Forwarding Table for {}".format(s))

print("{:>10} {:>10} {}".format("To", "Cost", "Path"))

for d in dest:

c, n = dijkstra(s, d)

print("{:>10} {:>10} {}".format(d, c, n))

def main():

for i in range(1, vertices_number + 1):

if str(i) not in dest:

start.append(str(i))

find_shortest_router()

if __name__ == '__main__':

main()

执行结果:

捕获.JPG

python求多条最短路径_Python实现最短路径算法(Dijkstra's algorithm)相关推荐

  1. python闭环最短路径_python实现最短路径的实例方法

    最短路径问题(python实现) 解决最短路径问题:(如下三种算法) (1)迪杰斯特拉算法(Dijkstra算法) (2)弗洛伊德算法(Floyd算法) (3)SPFA算法 第一种算法: Dijkst ...

  2. python迷宫最短路径_python实现最短路径的实例方法

    解决最短路径问题:(如下三种算法) (1)迪杰斯特拉算法(Dijkstra算法) (2)弗洛伊德算法(Floyd算法) (3)SPFA算法 第一种算法: Dijkstra算法 广度优先搜索解决赋权有向 ...

  3. python棋盘最短路径_Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例...

    本文实例讲述了Python数据结构与算法之图的最短路径(Dijkstra算法).分享给大家供大家参考,具体如下: # coding:utf-8 # Dijkstra算法--通过边实现松弛 # 指定一个 ...

  4. python求一条线的长度_python求线段的长度-女性时尚流行美容健康娱乐mv-ida网

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页  > 高级搜索 excel里去掉最高分最低分再 ...

  5. python求奇数的乘积_python求偶数之积

     今天小编就为大家分享一篇python 求1-100之间的奇数或者偶数之和的实例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 如下所示: i=0sum1=0sum2=0... P ...

  6. python求n的阶乘_python求n的阶乘

    阶乘是基斯顿·卡曼(Christian Kramp,1760-1826)于1808年发明的运算符号,是数学术语.一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1 ...

  7. python求平方根的代码_Python求解平方根的方法

    本文实例讲述了Python求解平方根的方法.分享给大家供大家参考.具体如下: 主要通过SICP的内容改写而来.基于newton method求解平方根.代码如下: #!/usr/bin/python ...

  8. python 求平面两点距离_Python求平面内点到直线距离的实现

    近期遇到个问题,需要计算平面内点到直线的距离,发现数学知识都还给老师了,度娘后找到计算方法,特此记录. 点到直线的计算公式: 通过公式推导,得到信息: A:直线斜率 B:固定值-1 C:直线截距b 转 ...

  9. python求两数最大公因数_Python求两个数的最大公约数

    Python求两个数的最大公约数 一.求最大公约数算法: 1. 整数A对整数B进行取整, 余数用整数C来表示 举例: C = A % B 2. 如果C等于0,则C就是整数A和整数B的最大公约数 3. ...

  10. python求三个数平均值_python求三个数平均值

    本文收集整理关于python求三个数平均值的相关议题,使用内容导航快速到达. 内容导航: Q1:利用python3.x计算任意数据平均值 l=[1,2,3]def ave(a):print(sum(a ...

最新文章

  1. 今天理解了一下HTTP头的Last-Modified 与If-Modified-Since
  2. 高精度矢量汉字的一种填充方法_使用PS中的钢笔工具制作一只蝴蝶矢量插画
  3. linux禁止线程网络,linux – 如何在gdb中禁用新线程/线程退出的消息?
  4. django和flask用MD5加密密码
  5. 如何搭建个人博客或企业官网
  6. mysql数据库无法启动_Mysql数据库无法启动问题的解决方案
  7. MySQL用C访问的示例代码
  8. 测试高中低音的软件6,分别用什么音乐来测试设备的高中低音。
  9. 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT) – 整理
  10. C#POP3协议实现SSL验证登陆GMAIL
  11. 揭秘3D游戏模型贴图师
  12. 高德地图各种摄像头图标_汽车导航怎么看?高德地图各种符号图标图解大全
  13. sql注入漏洞--sqlmap使用
  14. 论文阅读——INSIDER:Designing In-Storage Computing System for Emerging High-Performance Drive
  15. SPP、ASPP与PPM
  16. 时间复杂度和空间复杂度复习 (一)
  17. Kotlin协程实现原理
  18. sort函数用法使用lambda表达式自定义sort排序方法
  19. 【chatgpt代码系列】激光定位激光与地图匹配置信度算法
  20. 飞机机翼机身对接结构数值计算分析(ANSYS)

热门文章

  1. fusion安装centos7并配置静态ip
  2. Vue之动态组件(二)
  3. 一个小案例精通lamda表达式与函数式接口
  4. vue_ form表单 v-model
  5. java解析json数组
  6. Redis Sentinel
  7. 聊聊四种Oracle数字取整函数
  8. 第七章——DMVs和DMFs(4)——用DMV和DMF监控磁盘IO
  9. 移动应用可以通过微信沟通接口连接公众号 微信涨粉多了一个新通道
  10. VMware中的三种网络模式-----Host-only模式