n-网络
R-路由器
在上图中,您可以看到一个关于链路状态路由协议的问题。当你为r3做dijkstra算法的时候,我知道你从添加n3和n4开始,然后看看成本,2小于4,所以n4变成永久的,但是当n4变成永久的,它是添加r4和r7,还是只选择其中一个?
最佳答案
这个例子有点混乱,因为箭头,但我想我们可以假设这是一个顶点集N union R
的无向图。
从wikipedia开始,以下是dijkstra的步骤:
为每个节点指定一个暂定距离值:对于初始节点,将其设置为零,对于所有其他节点,将其设置为无穷大。
将所有节点标记为未访问。将初始节点设置为当前节点创建一组未访问的节点,称为未访问集,由除初始节点以外的所有节点组成。
对于当前节点,考虑其所有未访问的邻居并计算它们的暂定距离。
当我们考虑完当前节点的所有邻居后,将当前节点标记为已访问,并将其从未访问集中移除已访问的节点将不再被检查。
如果目标节点已被标记为已访问(在规划两个特定节点之间的路由时),或者未访问集中的节点之间的最小暂定距离为无穷大(在规划完全遍历时),则停止算法已经完成。
选择标记有最小暂定距离的未访问节点,并将其设置为新的“当前节点”,然后返回步骤3。
让我们来看看这些步骤。
公元1年。R3
是初始节点,因此它得到距离0
。
公元2年R3
是当前的。
公元3年。访问N3
和N4
,并将其暂定距离分别设置为4
和2
。
公元4年。将R3
标记为已完成。
公元5年。--
公元6年。选择N4
作为当前节点并返回步骤3。
公元3年访问R4
和R7
,并将其暂定距离分别设置为6
和3
。
公元4年。将N4
标记为已完成。
公元5年--
公元6年选择R7
作为当前节点并返回步骤3。
等等。