N- 网络 R- 路由器
在上图中,你可以看到一个关于链路状态路由协议的问题。当您为此执行R3 的 Dijkstra 算法时,我知道您从添加 N3 和 N4 开始,然后查看成本,2 小于 4,因此 N4 变为永久,但当 N4 变为永久时,是否添加 R4 和 R7 或执行你只选择其中之一?
N- 网络 R- 路由器
在上图中,你可以看到一个关于链路状态路由协议的问题。当您为此执行R3 的 Dijkstra 算法时,我知道您从添加 N3 和 N4 开始,然后查看成本,2 小于 4,因此 N4 变为永久,但当 N4 变为永久时,是否添加 R4 和 R7 或执行你只选择其中之一?
Dijkstra 算法的关键在于,在处理节点之前,您永远不会丢弃它。
Step 1 : R3
N4 - 2
N3 - 4
Step 2 : N4
R7 - 3
N3 - 4
R4 - 6
Step 3 : R7
N3 - 4
R4 - 6
N6 - 9
在此步骤中,您将 N3 作为与剩下的 R3 最接近的,因此您执行 N3
Step 4 : N3
R4 - 6
R8 - 6
R2 - 6
N6 - 9
请注意,在每一步之后都有一个排序。因此,最低优先级队列应该会有所帮助。
这个例子有点令人困惑,因为箭头,但我想我们可以假设这是一个带有顶点集的无向图N union R
。
来自wikipedia,这些是 Dijkstra 的步骤:
让我们根据您的情况来看看这些步骤。
R3
是初始节点,所以它得到 distance 0
。R3
是当前的。N3
和N4
并将它们的暂定距离分别设置为4
和。2
R3
为完成。N4
为当前节点并返回步骤 3。R4
和R7
并将它们的暂定距离分别设置为6
和。3
N4
为完成。R7
为当前节点并返回步骤 3。等等。