前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Dijkstra算法

Dijkstra算法

作者头像
裴来凡
发布于 2022-05-29 02:29:52
发布于 2022-05-29 02:29:52
41500
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import matplotlib.pyplot as plt
import networkx as nx
G1=nx.Graph()# 创建空的无向图
G1.add_weighted_edges_from([(1,2,2),(1,3,8),(1,4,1),
                            (2,3,6),(2,3,1),
                            (3,4,7),(3,3,3),(3,6,1),(3,7,2),
                            (4,7,9),
                            (3,6,3),(3,8,2),(3,9,9),
                            (6,7,4),(6,9,6),
                            (7,9,3),(7,10,1),
                            (8,9,7),(8,11,9),
                            (9,10,1),(9,11,2),
                            (10,11,4)])#向图中添加多条赋权边: (node1,node2,weight)
print('nx.info:',G1.nodes)
#两个指定顶点之间的最短加权路径
minWPath_v1_v11=nx.dijkstra_path(G1,source=1,target=11)# 顶点1到顶点11的最短加权路径
print("顶点 v1 到 顶点 v11 的最短加权路径: ",minWPath_v1_v11)
#两个指定顶点之间的最短加权路径的长度
lMinWPath_v1_v11=nx.dijkstra_path_length(G1,source=1,target=11)#最短加权路径长度
print("顶点 v1 到 顶点 v11 的最短加权路径长度: ",lMinWPath_v1_v11)
pos={1:(0,4),2:(5,7),3:(5,4),4:(5,1),5:(10,7),6:(10,4),7: (10,1),8:(15,7),9:(15,4),10:(15,1),11: (20,4)}# 指定顶点位置
labels=nx.get_edge_attributes(G1,'weight')#设置边的labels为weight
nx.draw(G1,pos,with_labels=True,font_color='w')#绘制无向图
nx.draw_networkx_edge_labels(G1,pos,edge_labels=labels,font_color='#ffc0cb')#边的权值
plt.show()

nx.info: [1, 2, 3, 4, 6, 7, 8, 9, 10, 11] 顶点 v1 到 顶点 v11 的最短加权路径: [1, 2, 3, 7, 10, 9, 11] 顶点 v1 到 顶点 v11 的最短加权路径长度: 9

算法:Dijkstra算法‍是从起始点开始采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点直到扩展到终点为止。

书籍:《数学建模算法与应用》

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验