Dijkstra计算N条最短路径的算法

时间:2015-11-25 02:02:10

标签: algorithm networking routing dijkstra shortest-path

是否有可能Dijkstra's Algorithm可用于计算从单一来源到单个目的地的N条最短路径,其中N是节点数?我知道Dijkstra输出从单一来源到图中所有节点的最短路径,但在我阅读研究论文时,作者提到使用Dijkstra来计算s和{{1}之间的N条最短路径这让我感到困惑。

以下是原始论文的引用: 利用基于SDN的SCADA系统:反窃听案例研究还发现here

  

Dijkstra算法[22]用于计算N个阶段中的N个最短路径(步骤5)。考虑到N = 2,在第一阶段,Dijkstra算法识别两个网络设备之间的最短路径,并且随后所有链路成本的权重增加了十倍。紧接着,在第二阶段(并且链路成本增加),再次执行Dijkstra算法以返回第二最短路线。最后,同样在第二阶段,将第一条路线的链路成本重新建立为原始值。如后面所述,N条最短路径将用于使用不同的路径传递通信流,因此,它们将被存储以供以后使用

1 个答案:

答案 0 :(得分:1)

此处的N似乎是作者控制的参数,并非特定于图遍历算法。他们使用该算法找到源站和目标站之间的最短路径。

  

接下来,算法   计算主站和之间的N条最短路径   特定的变电站,......

N是阶段数。他们只做一次,找到最短路径,并降低链接上的成本(乘以10)。然后,他们再次在新的更新链路成本上运行算法,以找到第二个最短(最低成本)路径,依此类推,N次。

然后在最后,他们将链接成本重置为原始值。

他们没有描述一些奇特的N对最短路径,而只是描述了相同的经典最短路径 - s - 和 - t算法N次(每次运行时的链路成本不同。)

其他变体

this上引用维基百科:

  

该算法存在许多变体; Dijkstra的原始变体找到了两个节点之间的最短路径,[2]但更常见的变体将单个节点固定为“源”节点,并找到从源到图中所有其他节点的最短路径,从而生成最短路径树。

您可以使用Dijkstra的一次运行从一个选定的源节点计算到所有其他节点的最短路径,但在本文中,它始终位于相同的源(主站)和目标(子站)之间。 / p>