链路状态路由协议 - Dijkstras算法

时间:2013-04-29 10:33:34

标签: algorithm networking network-protocols router dijkstra

enter image description here

N-网络 R-路由器

在上图中,您可以看到有关链路状态路由协议的问题。当你为R3做 Dijkstra算法时,我知道你开始加入N3和N4然后看成本,2小于4所以N4成为永久性但是当N4成为永久性时它添加R4和R7还是只选择其中一个?

2 个答案:

答案 0 :(得分:0)

这个例子有点令人困惑,因为箭头,但我想我们可以假设这是一个顶点集N union R的无向图。

wikipedia开始,这些是Dijkstra的步骤:

  1. 为每个节点分配一个暂定距离值:为我们的初始节点设置为零,为所有其他节点设置为无穷大。
  2. 标记未访问的所有节点。将初始节点设置为当前节点。创建一组称为未访问集的未访问节点,其中包含除初始节点之外的所有节点。
  3. 对于当前节点,请考虑所有未访问的邻居并计算其暂定距离。
  4. 当我们考虑当前节点的所有邻居时,将当前节点标记为已访问并将其从未访问的集合中删除。永远不会再次检查访问过的节点。
  5. 如果目标节点已被标记为已访问(在规划两个特定节点之间的路由时)或未访问集合中节点之间的最小暂定距离是无穷大(计划完整遍历时),则停止。算法已经完成。
  6. 选择标记有最小暂定距离的未访问节点,并将其设置为新的“当前节点”,然后返回步骤3.
  7. 让我们看看你的案例的这些步骤。

    • 的Ad1。 R3是初始节点,因此距离为0
    • Ad2的。 R3是最新的。
    • Ad3的。访问N3N4,并将他们的暂定距离分别设置为42
    • AD4。将R3标记为已完成。
    • 的Ad5。 -
    • AD6。选择N4作为当前节点,然后返回步骤3.
    • Ad3的。访问R4R7,并将他们的暂定距离分别设置为63
    • AD4。将N4标记为已完成。
    • 的Ad5。 -
    • AD6。选择R7作为当前节点,然后返回步骤3.

    等等。

答案 1 :(得分:0)

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

请注意,每一步都有一个排序。所以最低优先级队列应该有所帮助。

相关问题