Dijkstra算法的Python实现
2017-09-01 22:56
387 查看
#_*_coding=utf-8_*_ import numpy as np maxNum=1000000 #用一个大数表示无穷大 def Dijkstra(G,S): nV=len(G[0]) #初始化顶点访问标签 label=np.array([False]*nV) label[S]=True #初始化距离向量 Dis=np.array([maxNum]*5) for i in range(nV): Dis[i]=G[S][i] Dis[S]=0 for i in range(nV): u=minDis(G,label,Dis) if u==nV: break if Dis[u]==maxNum: continue label[u]=True for j in range(5): if G[u][j]!=maxNum and Dis[j]>(Dis[u]+G[u][j]): Dis[j]=Dis[u]+G[u][j] return Dis def minDis(G,label,Dis): u=0 nV=len(G[0]) #顺序查找第一个未访问顶点,全部访问则返回nV while(u<nV and label[u]): u+=1 #查找距离更小的未访问结点 l=range(u+1,nV,1) for i in l: if not label[i] and Dis[i]<Dis[u]: u=i return u G=np.array([[maxNum,7,6,maxNum,maxNum], [7,maxNum,maxNum,3,4], [6,maxNum,maxNum,maxNum,2], [maxNum,3,maxNum,maxNum,1], [maxNum,4,2,1,maxNum]]) for i in range(len(G[0])): print Dijkstra(G,i) >>> =============== RESTART: E:\DS&A\算法实现\Dijkstra\Dijkstra.py =============== [0 7 6 9 8] [7 0 6 3 4] [6 6 0 3 2] [9 3 3 0 1] [8 4 2 1 0]
相关文章推荐
- Python使用Dijkstra算法实现求解图中最短路径距离问题详解
- Dijkstra算法Python实现
- 用Python实现Dijkstra算法用来寻找两点之间的最短路径 (Implementation of Dijkstra in Python)
- python实现Dijkstra算法
- 【算法——Python实现】有权图求单源最短路径Dijkstra算法
- Dijkstra算法python的实现(有向图/无向图)
- dijkstra算法的python实现
- 最短路径问题:Dijkstra算法的python实现
- Python实现Dijkstra算法
- Python 实现Dijkstra算法_算法图解
- python实现爬虫--以CSDN为例
- Python实现基于协程的异步爬虫(一)
- LeetCode 75 SortColor(Python详解及实现)
- 人脸检测及识别python实现系列(4)——卷积神经网络(CNN)入门
- Python实现N阶台阶的走法问题
- 山东大学软件学院数据结构课程设计第一题python实现
- Python按行读取文件的简单实现方法
- 用python实现Kaggle的Titanic数据分析例子
- python的归并排序(mergesort)实现
- SSH暴力破解之Python-pxssh实现