dijkstra算法的python实现
2018-03-29 23:01
423 查看
def dijkstra(graph,src): # 判断图是否为空,如果为空直接退出 if graph is None: return None nodes = [i for i in range(len(graph))] # 获取图中所有节点 visited=[] # 表示已经路由到最短路径的节点集合 if src in nodes: visited.append(src) nodes.remove(src) else: return None distance={src:0} # 记录源节点到各个节点的距离 for i in nodes: distance[i]=graph[src][i] # 初始化 # print(distance) path={src:{src:[]}} # 记录源节点到每个节点的路径 k=pre=src while nodes: mid_distance=float('inf') for v in visited: for d in nodes: new_distance = graph[src][v]+graph[v][d] if new_distance < mid_distance: mid_distance=new_distance graph[src][d]=new_distance # 进行距离更新 k=d pre=v distance[k]=mid_distance # 最短路径 path[src][k]=[i for i in path[src][pre]] path[src][k].append(k) # 更新两个节点集合 visited.append(k) nodes.remove(k) # print(visited,nodes) # 输出节点的添加过程 return distance,path |
相关文章推荐
- 【算法——Python实现】有权图求单源最短路径Dijkstra算法
- Dijkstra算法python的实现(有向图/无向图)
- Python使用Dijkstra算法实现求解图中最短路径距离问题详解
- Python实现Dijkstra算法
- 用Python实现Dijkstra算法用来寻找两点之间的最短路径 (Implementation of Dijkstra in Python)
- 最短路径问题:Dijkstra算法的python实现
- Python 实现Dijkstra算法_算法图解
- python实现Dijkstra算法
- Dijkstra算法的Python实现
- Dijkstra算法Python实现
- OPENCV运动追踪研究和PYTHON及JAVA实现
- Python Counter() 的实现
- Python实现从百度API获取天气的方法
- python实现异步回调机制代码分享
- 距离度量以及python实现(二)
- 数据结构之单链表及python实现
- 剑指offer python实现
- 用 Python 脚本实现对 Linux 服务器的监控
- Python+MySQL实现web日志分析
- 快速排序的算法思想及Python版快速排序的实现示例