最短路径用什么算法,最短路径算法总结
说明
1、解决任意两个节点之间的最短距离,用弗洛伊德。
2、解决单源最短路径问题,有负边时用贝尔曼-福特公司,无负边时用迪克斯特拉。
3、A*算法找到了相对路径,适用于大规模、高实时性的问题。
实例
#!/usr/bin/python3
#编码=utf-8
my_max=0xffff
丹麦议会第:号
#自身到自身为0
d[v]=0
第:号
u=-1
我的最小值=我的最大值
forjinrange(n):
ifvis[j]==false和d[j]my _ min :
u,my_min=j,d[j]
ifu==-1:
返回
vis=True
forsinrange(n):
ifvis[s]==FalseandG[u][s]!=my_maxandd[u] G[u][s]d[s]:
d[s]=d[u] G[u][s]
defmian():
n,edges,v=map(int,input(请输入图的节点个数,边个数和起始点:).拆分())
#n=3
边数=3
d=[my_maxfortinrange(n)]
vis=[Falseforiinrange(n)]
G=[]
# G=[[我的最大,1,我的最大],[1,我的最大,3],[我的最大,3,我的最大]]
forjinrange(n):
g。追加([my _ maxfortinrange(n)])
边缘:
node1,node2,edge_node=map(int,input(请输入请输入两个节点和中间的边:).拆分())
g[节点1][节点2]=边节点
g[节点2][节点1]=边节点
迪克斯特拉(v,G,d,vis,n)
foriinrange(透镜(d)):
打印(节点%d到节点%d的最短距离是:%d%(v,I,d[i]))
if__name__==__main__:
勉()以上就是大蟒最短路径算法的选择方法,希望对大家有所帮助。更多大蟒学习指路:python基础教程
本文教程操作环境:windows7系统、Python 3.9.1、戴尔自交第三代电脑。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。