【问题标题】:Link state routing protocol - Dijkstras Algorithm链路状态路由协议 - Dijkstra 算法
【发布时间】:2013-04-22 23:45:39
【问题描述】:

N- 网络 R- 路由器

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

【问题讨论】:

  • N4 和 N3 都没有出边,所以这些路径是无向的吗?另外,我猜你是从 R3 开始的,你想到达哪里?

标签: algorithm networking network-protocols router dijkstra


【解决方案1】:

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

来自wikipedia,这是Dijkstra的步骤:

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

让我们看看这些步骤适合您的情况。

  • 广告1。 R3 是初始节点,所以它得到距离0
  • Ad2。 R3 是最新的。
  • Ad3。访问N3N4 并将它们的暂定距离分别设置为42
  • Ad4。将R3 标记为完成。
  • Ad5。 --
  • Ad6。选择N4作为当前节点并返回步骤3。
  • Ad3。访问R4R7 并将它们的暂定距离分别设置为63
  • Ad4。将N4 标记为完成。
  • Ad5。 --
  • Ad6。选择R7作为当前节点并返回步骤3。

等等。

【讨论】:

    【解决方案2】:

    关于 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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 2019-11-23
      • 1970-01-01
      • 2011-08-15
      • 2016-10-09
      • 2017-04-24
      • 2023-03-06
      相关资源
      最近更新 更多