计量地理学布置了一道作业,通过标号法确定最短路径。老师说用arcgis来实现,但是我想锻炼一下,所以使用python来实现一下这个算法(具体算法可百度)。入门小白,希望路过的大佬多多指教。


#标号法求最短距离
#权重,字典形式
W = {}
#P列表和T列表
P = []
T = []
#一开始P中只有V1点
P.append([1])
P.append([0,1,0,0,0,0,0,0,0,1])
#T中包含有其余点,第一个只代表T值,由于一开始V1点在P中,因此取0,其他的取较大值,此处取1000
#通过0和1的对比来确定之间互通的两个点
#比如1点通向2,3,4点,那么这四个列表中的第二个值就是1,其余点为0
#列表中的最后一个值代表这个点的编号
T.append([1000,1,1,0,0,0,0,0,2])
T.append([1000,1,1,1,0,0,0,0,3])
T.append([1000,1,0,1,1,0,0,0,4])
T.append([1000,0,0,1,1,1,0,0,5])
T.append([1000,0,1,1,0,1,1,1,6])
T.append([1000,0,1,0,0,1,0,1,7])
T.append([1000,0,0,0,0,0,1,1,8])
#手动输入权值
W['12']=2
W['13']=5
W['14']=3
W['23']=2
W['26']=7
W['27']=4
W['34']=1
W['35']=3
W['36']=5
W['45']=5
W['56']=1
W['58']=7
W['68']=5
W['76']=2
W['78']=3#传入两个列表参数
def go_through_dict(Plist,Tlist):templist = []#遍历T列表for key,value in enumerate(Tlist):#i代表P列表中新加进来元素的最后一个值,即最新确定P值的点的编号i = Plist[0][-1]#判断是否两点之间可以通向if Plist[-1][i] == value[i] :a = value[0]b = Plist[-1][0] + W['{}{}'.format(i,value[-1])]#更改T值value[0] = min(a,b)for i in range(len(Tlist)):templist.append(Tlist[i][0])#确定现存T列表中的最小值minvalue = min(templist)#通过最小值来更新P列表和T列表for key, value in enumerate(Tlist):if value[0] == minvalue:Plist.append(value)# temp = key+2Plist[0].append(value[-1])T.pop(key)print(P)#通过k-1次迭代
for i in range(7):print('-------------------第{}次------------------'.format(i+1))go_through_dict(P,T)

运行结果

-------------------第1次------------------
[[1, 2], [0, 1, 0, 0, 0, 0, 0, 0, 0, 1], [2, 1, 1, 0, 0, 0, 0, 0, 2]]
-------------------第2次------------------
[[1, 2, 4], [0, 1, 0, 0, 0, 0, 0, 0, 0, 1], [2, 1, 1, 0, 0, 0, 0, 0, 2], [3, 1, 0, 1, 1, 0, 0, 0, 4]]
-------------------第3次------------------
[[1, 2, 4, 3], [0, 1, 0, 0, 0, 0, 0, 0, 0, 1], [2, 1, 1, 0, 0, 0, 0, 0, 2], [3, 1, 0, 1, 1, 0, 0, 0, 4], [4, 1, 1, 1, 0, 0, 0, 0, 3]]
-------------------第4次------------------
[[1, 2, 4, 3, 7], [0, 1, 0, 0, 0, 0, 0, 0, 0, 1], [2, 1, 1, 0, 0, 0, 0, 0, 2], [3, 1, 0, 1, 1, 0, 0, 0, 4], [4, 1, 1, 1, 0, 0, 0, 0, 3], [6, 0, 1, 0, 0, 1, 0, 1, 7]]
-------------------第5次------------------
[[1, 2, 4, 3, 7, 5], [0, 1, 0, 0, 0, 0, 0, 0, 0, 1], [2, 1, 1, 0, 0, 0, 0, 0, 2], [3, 1, 0, 1, 1, 0, 0, 0, 4], [4, 1, 1, 1, 0, 0, 0, 0, 3], [6, 0, 1, 0, 0, 1, 0, 1, 7], [7, 0, 0, 1, 1, 1, 0, 0, 5]]
-------------------第6次------------------
[[1, 2, 4, 3, 7, 5, 6], [0, 1, 0, 0, 0, 0, 0, 0, 0, 1], [2, 1, 1, 0, 0, 0, 0, 0, 2], [3, 1, 0, 1, 1, 0, 0, 0, 4], [4, 1, 1, 1, 0, 0, 0, 0, 3], [6, 0, 1, 0, 0, 1, 0, 1, 7], [7, 0, 0, 1, 1, 1, 0, 0, 5], [8, 0, 1, 1, 0, 1, 1, 1, 6]]
-------------------第7次------------------
[[1, 2, 4, 3, 7, 5, 6, 8], [0, 1, 0, 0, 0, 0, 0, 0, 0, 1], [2, 1, 1, 0, 0, 0, 0, 0, 2], [3, 1, 0, 1, 1, 0, 0, 0, 4], [4, 1, 1, 1, 0, 0, 0, 0, 3], [6, 0, 1, 0, 0, 1, 0, 1, 7], [7, 0, 0, 1, 1, 1, 0, 0, 5], [8, 0, 1, 1, 0, 1, 1, 1, 6], [9, 0, 0, 0, 0, 0, 1, 1, 8]]

这里面最后应该加一些代码,通过比较方向和大小确定最后的最短路径,有兴趣自尝试。

python实现标号法确定最短路径相关推荐

  1. dijkstra标号法表格_标号法求最短路径例题详解.ppt

    标号法求最短路径例题详解 r * 最短路径 带权图G=, 其中w:E?R. ?e?E, w(e)称作e的权. e=(vi,vj), 记w(e)=wij . 若vi,vj不 相邻, 记wij =?. 设 ...

  2. 用标号法求最短路径matlab,标号法求最短路径问题

    dijstra算法 最短路径 运筹学 教学目标: 教案 标题:标号法求最短路径问题 1.通过本节学习,使学生掌握标号法的步骤: 2.通过本节学习,学生能够应用标号法求解配送路径问题 教学重点及难点: ...

  3. 用标号法求最短路径matlab,标号法求最短路径例题详解重点.ppt

    r * 最短路径 带权图G=, 其中w:E?R. ?e?E, w(e)称作e的权. e=(vi,vj), 记w(e)=wij . 若vi,vj不 相邻, 记wij =?. 设L是G中的一条路径, L的 ...

  4. 用标号法求最短路径matlab,标号法求最短路径例题分析.ppt

    r * 最短路径 带权图G=, 其中w:E?R. ?e?E, w(e)称作e的权. e=(vi,vj), 记w(e)=wij . 若vi,vj不 相邻, 记wij =?. 设L是G中的一条路径, L的 ...

  5. 标号法求解单源最短路径

    1. 问题描述 给定一个图结构,包含n个点,e条边,求解源点 s 到汇点 t 的最短路径及长度,以及源点 s 到前1000个点的最短路径长度. 数据文件"union.txt",格式 ...

  6. 数据结构与算法(Python)– 回溯法(Backtracking algorithm)

    数据结构与算法(Python)– 回溯法(Backtracking algorithm) 1.回溯法 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条 ...

  7. 标号法(label-setting algorithm)求解带时间窗的最短路问题(ESPPRC)

    以下文章来源于数据魔术师 ,作者邓发珩.周航 前言 哈罗大家好~! 想必大家在刚开始学习运筹学模型时,会觉得有些茫然不知所措吧?比如一大堆神奇的名词,各种各样的约束...反正我一开始是很懵的状态. 那 ...

  8. Python访问街区所有节点最短路径问题,并结合matplotlib可视化

    Python访问街区所有节点最短路径问题,并结合matplotlib可视化 1. 效果图 2. 源码 2.1 5个点全排列(递归+非递归算法) 2.2 python遍历全路径计算距离+matplot可 ...

  9. 八皇后问题python回溯_解决Python基于回溯法子集树模板实现8皇后问题

    这篇文章主要介绍了Python基于回溯法子集树模板实现8皇后问题,简单说明了8皇后问题的原理并结合实例形式分析了Python回溯法子集树模板解决8皇后问题的具体实现技巧,需要的朋友可以参考下 本文实例 ...

最新文章

  1. [JAVA EE]常用的实体类注解
  2. 西北师范计算机考研调剂,西北师范大学研究生调剂
  3. 教你一招“恶意修改主页”的处理办法
  4. 2020秋季人工神经网络作业登记与批改
  5. golang goroutine 协程原理
  6. Python3报错:TypeError: unsupported operand type(s) for +: ‘int‘ and ‘str‘
  7. MFC空间几何变换之图像平移、镜像、旋转、缩放
  8. arcgis for android sdk下载地址,Arcgis Runtime sdk for android 授权
  9. 【华为云技术分享】HDC.Cloud|华为云Stack大咖说:如何实现微服务架构下的分布式事务
  10. html打印标签多了一页,webpack打包多页应用,如何处理不同html页面(通过a标签)之间的跳转?...
  11. 25 款软件上榜,2020“最佳开源奖” 出炉!
  12. 华为防火墙笔记-报文处理流程
  13. java-day24
  14. 全国所有城市人均GDP排名(包含县级市)
  15. 福成股份很忙:实控人李福成被罚8万,新董事长李良则要打官司
  16. 汉诺塔问题c++递归解法
  17. 30个T的硬盘都不够装,你想要的资源都在这里
  18. 暗黑2浴火重生zclient注册账号
  19. Automa爬取网页数据直接入库(四)
  20. 一分钟就能让你了解NLP!

热门文章

  1. c语言雷克子波函数表达式,雷克子波频率研究
  2. 解决uni-app uniCloud小程序预览没有数据
  3. rufus 装windows11 系统 z790 msi 主板
  4. win10打开计算机加载很慢,win10电脑文件夹打开特别慢怎么回事 文件夹假死问题快速解决步骤...
  5. apache jmeter 压力测试工具
  6. 【Java】算法之矩阵的加减乘除运算
  7. preparestatement中的反射原理_技术文章 |智能网联汽车激光雷达工作原理、性能比较与安全性分析...
  8. maya导入arnold代理ass文件后,无法修改ass内贴图路径问题的解决方法
  9. 用计算机变的魔术,iPhone计算器不为人知的隐藏技能,听说竟然还能用它变魔术?...
  10. mysql使用条件限制乐观锁_mysql乐观锁解决并发问题