【发布时间】:2025-12-13 01:25:02
【问题描述】:
我正在尝试编写 Dijkstra 算法,但是我正在努力研究如何在代码中“说出”某些内容。 为了形象化,这里是我想用数组表示的列:
max_nodes
A B C Length Predecessor Visited/Unvisited
A 0 1 2 -1 U
B 1 0 1 -1 U
C 2 1 0 -1 U
所以,会有几个数组,如下面的代码所示:
def dijkstra (graph, start, end)
network[max_nodes][max_nodes]
state [max_nodes][length]
state2 [max_nodes][predecessor]
state3 [max_nodes][visited]
initialNode = 0
for nodes in graph:
D[max_nodes][length] = -1
P[max_nodes][predecessor] = ""
V[max_nodes][visited] = false
for l in graph:
length = lengthFromSource[node] + graph[node][l]
if length < lengthFromSourceNode[w]:
state[l][length] = x
state2[l][predecessor]
state3[l][visited] = true
x +=1
粗体部分是我坚持的地方——我正在尝试实现这部分算法:
3.对于当前节点,考虑其所有未访问的邻居并计算它们的暂定距离。例如,如果当前节点 (A) 的距离为 6,并且连接它与另一个节点 (B) 的边为 2,则通过 A 到 B 的距离将为 6+2=8。如果此距离小于之前记录的距离,则覆盖该距离
4. 当我们考虑完当前节点的所有邻居后,将其标记为已访问。被访问的节点将不再被检查;它现在记录的距离是最终的和最小的
我认为我在正确的轨道上,我只是停留在怎么说'从节点开始,获取从源到节点的长度,如果长度更小,覆盖以前的值,然后移动到下一个节点
【问题讨论】:
-
“粗体部分”?什么部分加粗?
-
啊,是的,对不起; 'for l in graph' 向下的代码
-
您的代码根本没有多大意义。缩进非常随机,并且有很多未定义的变量。当你在编程时,从一些简单的东西开始,然后从那里开始扩展。