当前位置: 首页 > 图灵资讯 > 行业资讯> Python Dijkstra算法是什么

Python Dijkstra算法是什么

来源:图灵python
时间: 2024-06-30 20:38:37

说明

1、Dijkstra算法是数据结构、图论、运筹学等基础教学算法的经典最短路径算法。

有趣的是,Dijkstra算法通常是以贪婪的方式描述的,而Dijkstra算法则被视为运筹学中的动态规划。

2、从起点开始,Dijkstra算法采用贪心法。

每次遍历一个距离起点最近但没有到达的邻接顶点,层层展开,直到结束。

Dijkstra算法求解加权最短路径的最佳解,其时间复杂度为o^2。当边数远小于n^2时,可以降低复杂度,并以堆叠结构的形式将其降低为o^2`(m+n)log(n))。

由贪心法的选择规则决定,Dijkstar算法无法处理负权边。

实例

defdijstra(adj,src,dst,n):
dist=[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')
forvinrange(n):#w
w=adj[u][v]
ifw==Inf:#结点U和V之间没有边缘
continue
ifnotbook[v]anddist[u]+w<dist[v]:#判断结点是否已确定,
dist[v]=dist[u]+w
ifdist[v]<minVal:
next_u,minVal=v,dist[v]
#下一轮遍历开始
u=next_u
print(dist)
returndist[dst]

以上是Python 介绍Dijkstra算法,希望对大家有所帮助。更多Python学习指导:python基础教程

本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。