图搜索之基于Python的迪杰斯特拉算法和弗洛伊德算法
来源:互联网 发布:北京赛车分析软件 编辑:程序博客网 时间:2024/05/27 00:49
图搜索之基于Python的迪杰斯特拉算法和弗洛伊德算法
Djstela算法
#encoding=UTF-8MAX=9'''Created on 2016年9月28日@author: sx'''b=999G=[[0,1,5,b,b,b,b,b,b],\ [1,0,3,7,5,b,b,b,b],\ [5,3,0,b,1,7,b,b,b],\ [b,7,b,0,2,b,3,b,b],\ [b,5,1,2,0,3,6,9,b],\ [b,b,7,b,3,0,b,5,b],\ [b,b,b,3,6,b,0,2,7],\ [b,b,b,b,9,5,2,0,4],\ [b,b,b,b,b,b,7,4,0]]P=[]D=[]def Djstela(G,P,D): final=[] for i in range(0,len(G)): final.append(0) D.append(G[0][i]) P.append(0) D[0]=0 final[0]=1 k=0 for v in range(1,len(G)): min=999 for w in range(0,len(G)): if final[w]==0 and D[w]<min: k=w min=D[w] final[k]=1 for t in range(0,len(G)): if min+G[k][t]<D[t]: D[t]=min+G[k][t] P[t]=k print("\n最短路径\n",D,"\n","\n前一个选择\n",P)def search(x): print("选择的终点",x,"最短路径",D[x]) print("邻接矩阵\n")for i in range(0,9): print(G[i])Djstela(G, P, D)q=input("\n请输入终点")search(int(q))
FLOYD算法
#encoding=UTF-8'''Created on 2016年9月28日@author: sx'''t=0b=999G=[[0,1,5,b,b,b,b,b,b],\ [1,0,3,7,5,b,b,b,b],\ [5,3,0,b,1,7,b,b,b],\ [b,7,b,0,2,b,3,b,b],\ [b,5,1,2,0,3,6,9,b],\ [b,b,7,b,3,0,b,5,b],\ [b,b,b,3,6,b,0,2,7],\ [b,b,b,b,9,5,2,0,4],\ [b,b,b,b,b,b,7,4,0]]P=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],\ [0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],\ [0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]]D=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],\ [0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],\ [0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]]def Floyd(G,P,D): t=0 for u in range(0,len(G)): for s in range(0,len(G)): D[u][s]=G[u][s] P[u][s]=s for k in range(0,len(G)): for v in range(0,len(G)): for w in range(0,len(G)): if D[v][w]>D[v][k]+D[k][w]: t=t+1 D[v][w]=D[v][k]+D[k][w] P[v][w]=P[v][k] Floyd(G, P, D)def search(s,u): lenth=D[s][u] print("路径长度为",lenth) f=P[s][u] foot=[s,f] if f==u: print("无需规划,0步") while f!=u: f=P[f][u] foot.append(f) for i in range(0,len(foot)): if i==0: print("起 点____",foot[i]) elif i==len(foot)-1: print("终 点____",foot[i],"步长___",G[foot[i-1]][foot[i]]) else: print("第",i,"点____",foot[i],"步长___",G[foot[i-1]][foot[i]])print("邻接矩阵")for i in range(0,9): print(G[i])s=input("请输入起点0-8\n")u=input("请输入终点0-8\n")Floyd(G, P, D)search(int(s),int(u))
0 0
- 图搜索之基于Python的迪杰斯特拉算法和弗洛伊德算法
- 图之最短路径算法-Dijkstra(迪杰斯特拉)算法和Floyd(弗洛伊德)算法
- 最短路之弗洛伊德算法和模板
- 迪杰斯特拉算法与弗洛伊德算法
- 图(最短路径算法————迪杰斯特拉算法和弗洛伊德算法)
- 弗洛伊德算法
- 【弗洛伊德算法】
- 弗洛伊德算法
- 弗洛伊德算法
- 弗洛伊德算法
- 弗洛伊德算法
- 弗洛伊德算法
- 弗洛伊德算法
- 弗洛伊德算法
- 算法导论-图的搜索算法之深度优先搜索和广度优先搜索
- 图之最短路径之弗洛伊德算法
- Floyed-Warshall 弗洛伊德算法 之k的位置
- 图之最短路径:弗洛伊德(Floyd)算法
- 在 Laravel 5.1 中使用SMTP驱动实现邮件发送(含附件和图片)详细教程
- 【Wc2002】奶牛浴场
- 【oschina】mysql web数据库的设计归范-1命名规范
- HDU 2844 FATE (二维完全背包)
- cassandra 3.x官方文档(6)---内部原理之存储引擎
- 图搜索之基于Python的迪杰斯特拉算法和弗洛伊德算法
- css-display属性辨析
- Bash One-Liners Explained 译文(三)(转载自团子的小窝)
- servlet_04 servlet表单
- 从虚拟机视角谈 Java 应用性能优化
- java多线程TCP与单线程TCP编程的结果演示
- 2016 小灶1 F (POJ2635)
- 使用命令行对Android应用签名
- Ceph后端ObjectStore存储引擎实现和发展