基于Python实现迪杰斯特拉和弗洛伊德算法


Posted in Python onMay 27, 2020

图搜索之基于Python的迪杰斯特拉算法和弗洛伊德算法,供大家参考,具体内容如下

Djstela算法

#encoding=UTF-8
MAX=9
'''
Created on 2016年9月28日
@author: sx
'''
b=999
G=[[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=0
b=999
G=[[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))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python操作json数据的一个简单例子
Apr 17 Python
Python学习笔记(二)基础语法
Jun 06 Python
Python中pygame的mouse鼠标事件用法实例
Nov 11 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
对pandas数据判断是否为NaN值的方法详解
Nov 06 Python
python实现贪吃蛇游戏
Mar 21 Python
200行python代码实现2048游戏
Jul 17 Python
Python任务自动化工具tox使用教程
Mar 17 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
Mar 30 Python
Python pysnmp使用方法及代码实例
Aug 24 Python
Python 实现绘制子图及子图刻度的变换等问题
May 31 Python
Python中如何处理常见报错
Jan 18 Python
Python中logging实例讲解
Jan 17 #Python
python矩阵/字典实现最短路径算法
Jan 17 #Python
python实现Dijkstra静态寻路算法
Jan 17 #Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 #Python
python实现dijkstra最短路由算法
Jan 17 #Python
Pycharm 设置默认头的图文教程
Jan 17 #Python
python实现狄克斯特拉算法
Jan 17 #Python
You might like
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
2013/04/15 PHP
PHP常用函数和常见疑难问题解答
2014/03/05 PHP
php实现webservice实例
2014/11/06 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
jQuery 使用手册(二)
2009/09/23 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
用方法封装javascript的new操作符(一)
2010/12/25 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
jquery插件格式实例分析
2016/06/16 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
[01:57]2018DOTA2亚洲邀请赛赛前采访-iG
2018/04/03 DOTA
python实现socket客户端和服务端简单示例
2014/02/24 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
浅谈Python协程
2020/06/17 Python
python入门教程之基本算术运算符
2020/11/13 Python
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
.NET是怎么支持多种语言的
2015/02/24 面试题
会计系毕业个人自荐信格式
2013/09/23 职场文书
劲霸男装广告词
2014/03/21 职场文书
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
js前端图片加载异常兜底方案
2022/06/21 Javascript