dijkstra属于什么算法,dijkstra算法简单理解
说明
1.Dijkstra算法是一种经典的最短路径算法,是数据结构、图论、运筹学等基础教学算法。
有意思的是,Dijkstra算法通常用贪婪方法描述,而在运筹学中Dijkstra算法被视为动态规划。
2.Dijkstra算法从起点出发,采用贪心法。
每次遍历一个离起点最近且未到达的相邻顶点,逐层展开直至终点。
Dijkstra算法求解加权最短路径的最优解,时间复杂度为O ^ 2。当边数远小于N 2时,复杂度可以降低,以堆结构的形式可以降低到o `(m ^ N)log(N)。
Dijkstar算法不能处理负权边,这是由贪婪方法的选择规则决定的。
实例
defdijstra(调整,src,dst,n):
距离=[Inf]*n
dist[src]=0
Book=[0]*n#记录确定的顶点。
#每次都找到从起点到那个点的最短路径
u=src
For_inrange(n-1):#寻找n-1次
Book[u]=1#已经确定
#更新距离并记录距离最小的节点
next_u,minVal=None,float(inf )
对于温兰奇(北):#w
adj .形容词,形容词
Ifw==Inf:# #节点U和v之间没有边。
继续
如果book[v]and dist[u]wdist[v]: #判断节点是否已经确定,
距离,距离
minVal:
next_u,minVal=v,dist[v]
#开始下一轮遍历
u=next_u
打印(分发)
Returndist[dst]以上是Python Dijkstra算法的介绍。希望对你有帮助。更多python学习方向:Python基础课程
本教程运行环境:windows7系统,Python 3.9.1,DELL G3电脑。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。