定向加权图最短路径,强制节点通过

时间:2017-01-13 17:14:44

标签: algorithm graph graph-algorithm dijkstra shortest-path

您好我正在尝试找到解决此问题的最佳算法。

我有一个图表,我必须找到指定的开始和结束节点之间的最短路径,但必须传递特定的用户输入节点。

必须传递节点没有顺序,您可以多次访问每个节点。

如果我认为每个必须通过的节点需要在特定的订单上达到,那么首先计算到每个停靠点的最短路径会更容易吗?

K Shortest路径是解决这个问题的方法吗?计算最短路径并从那里开始,直到我们发现所有必须通过节点的最短路径?

这是我绘制的示例图 enter image description here

节点4和6必须通过,我需要找到1到5之间的最短路径。

1 个答案:

答案 0 :(得分:0)

众所周知,2个不相交的路径问题是NP-complete in digraphs。它们的证明具有图G和两个源顶点s1,s2和两个端子t1,t2。任务是找到两个内部顶点不相交路径p1,p2 s.t p1连接s1到t1,p2连接s2,t2。我们可以使用不相交的路径来模拟您的问题。在上面提到的硬度证明中提供的图中,只需识别s2,t1并使其成为新的顶点s2t1。然后在原始图中有两条不相交的路径,当且仅当存在从s1开始的路径经过s2t1并且在t2结束时。这意味着即使在有向图中找到这样的路径也很困难。甚至没有优化版本。

但如果图形具有特殊结构,则可以更容易。像例如在非循环图上它更容易。