求助python的最短路径问题

求助python的最短路径问题,第1张

这是一个深度优先搜索算法(Deepth First Search, DFS)

算法核心是不断递归,直到找到目标,入队一种可能方案,return返回上一递归,再次尝试以当前点开始计算有没有其他方案,如有则继州前续递归并入队,袜乱如没有则再次return

简单来说就是这样的结构:

def dfs(position, value):

# position 传参位置,value 传参到现在的计算结果

if 到达告迹档目标:

判断value是否比最短路径

      return value

else:

for x in position的所有可能下一路径:

if x在路径列表中:

# 不能有重复路径,变成回环

continue

else:

获取路径x的值

改变position

  入队 dfs(new_position, value+x

这个代码用的是字典存储每个点可到达的点以及路程

然后深度优先搜索

不懂再追问

1 针对给定的多旁没尘个起点和终点,如果要求起点之间不交叉,那么存在最短路径。

2 因为起点之间不交叉,可以将问题简化为多运禅个单起点单终点的问题,可以使用 Dijkstra 算法察汪或者 A* 算法等求解最短路径的算法。

3 如果需要考虑多个起点之间的交叉情况,可以考虑使用遗传算法等启发式算法,不过这样的算法复杂度较高,需要更长的计算时间。

你是想学PYTHON编程还是只是想只得到这个PYTHON文件。可以给你提供一条简洁的途径用modelbuilder来实现,将多个SHP文件拖入进去,再把MERGE工具拖进去宴烂,双击modelbuilder中的merge工具框设置,再双击output dataset框设置输出。晌陪漏然后将这些shp文件用倒数第二个按钮添加链接的功能将他们一个个与merge工具框链接起来。最后点击model-export-to srcipt-python 就会输出一个python文件,可以用记事本打开查看乱茄里面的代码。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12507122.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存