您好我正在尝试找到解决此问题的最佳算法。
我有一个图表,我必须找到指定的开始和结束节点之间的最短路径,但必须传递特定的用户输入节点。
必须传递节点没有顺序,您可以多次访问每个节点。
如果我认为每个必须通过的节点需要在特定的订单上达到,那么首先计算到每个停靠点的最短路径会更容易吗?
K Shortest路径是解决这个问题的方法吗?计算最短路径并从那里开始,直到我们发现所有必须通过节点的最短路径?
这是我绘制的示例图
节点4和6必须通过,我需要找到1到5之间的最短路径。
答案 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结束时。这意味着即使在有向图中找到这样的路径也很困难。甚至没有优化版本。
但如果图形具有特殊结构,则可以更容易。像例如在非循环图上它更容易。