python - Djikstra 算法的时间复杂度最坏情况和最佳情况?
问题描述
有人可以逐行解释以下 Djikstra 算法的时间复杂度(最坏情况和背心情况)吗?我在任何地方都找不到详细的解释,因此将不胜感激。
def dijkstra(graph,start,pharmacy):
minimumContainmentZones = {}
predecessor = {}
unseenNodes = deepcopy(graph)
infinity = 9999999
path = []
for node in unseenNodes:
minimumContainmentZones[node] = infinity
minimumContainmentZones[start] = 0
while unseenNodes:
minNode = None
for node in unseenNodes:
if minNode is None:
minNode = node
elif minimumContainmentZones[node] < minimumContainmentZones[minNode]:
minNode = node
for childNode, weight in graph[minNode].items():
if weight + minimumContainmentZones[minNode] < minimumContainmentZones[childNode]:
minimumContainmentZones[childNode] = weight + minimumContainmentZones[minNode]
predecessor[childNode] = minNode
unseenNodes.pop(minNode)
currentNode = pharmacy
while currentNode != start:
try:
path.insert(0,currentNode)
currentNode = predecessor[currentNode]
except:
print('Path not reachable')
break
path.insert(0,start)
if minimumContainmentZones[pharmacy] != infinity:
return(pharmacy,minimumContainmentZones[pharmacy],str(path))
解决方案
推荐阅读
- server - 从 Delphi-7 中的客户端调用时,无法在 Windows Server 2012 中执行 asp-classic 脚本
- mysql - SQL - 如何根据另一个最大值选择一个值?
- r - devtools::install() 有效,但 devtools::check() 无效
- algorithm - 读取和写入同一通道的工作池
- node.js - 如何将数据传递给 Express 路由器(并同时更改 url)
- scala - 将简单函数移出 UDF 时任务不可序列化
- r - 匹配无循环的家庭伙伴
- java - Log4j2 回滚后总是写入同一个文件
- python - Python - 解决 Tweepy 的命令行错误
- java - Android Volley 错误:com.android.volley.ClientError