三、最短路径之Dijkstra算法
来源:互联网 发布:2017网络剧上映时间表 编辑:程序博客网 时间:2024/05/09 01:04
1.Dijkstra算法
1.1算法介绍
1.2算法原理
1.3算法过程
1.4算法示例
从节点1出发到图中其余节点的最短路径分别是:
2—8,3—15,4--20,5—13,6--18
程序:说明:这里假设边的权重最大不超过100,以此代替无穷大;利用s和s1分别保存两个不同的点集合,d中保存l数组
import networkx as nxdef Dijkstra(i,G=nx.Graph): s=[] s1=[] d=[] s.append(i) d.append(0) for node in G.nodes(): if node != i: s1.append(node) d.append(100) while s1: u_item=s[len(s)-1] for node in s1: if G.has_edge(u_item,node): if d[node-1]>G.get_edge_data(u_item,node)['weight']+d[u_item-1]: d[node-1]=G.get_edge_data(u_item,node)['weight']+d[u_item-1] index=0 if len(s1)==1: index=0 else: i=1 while i<len(s1): if d[s1[i]-1]<d[s1[index]-1]: index=i i=i+1 s.append(s1[index]) del s1[index] print dG=nx.Graph()G.add_weighted_edges_from([(1,2,8),(1,3,16),(1,5,13),(2,3,7),(2,4,17),(2,5,11),(2,6,10),(3,4,5),(4,5,14),(4,6,6)])Dijkstra(1,G)
结果
- 三、最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra+Floyd算法
- 最短路径 之 Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra+Floyd算法
- 最短路径之Dijkstra算法
- Node:最短路径算法之Dijkstra
- 最短路径之迪杰斯特拉(Dijkstra)算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之迪克斯特拉(Dijkstra)算法
- 【最短路径】之Dijkstra算法
- 魔棍
- 存储过程中执行sql字符串,给存储过程的变量赋值
- 简单介绍如何使用robotium进行自动化测试
- 程序员如何在"大公司学习"和"小公司成长"?
- Spring MVC 3学习笔记+教程(一)开发环境搭建和HelloWorld程序
- 三、最短路径之Dijkstra算法
- Spring MVC 3学习笔记+教程(二)在controller和视图之间传递参数
- 利用diskpart设置移动硬盘写保护(转)
- metasploit_命令学习1
- Spring MVC 3学习笔记+教程(三)返回JSON数据
- 系统文件夹加密
- eclipse 的几个常用插件
- Thumb指令
- oracle 查看表空间