Algorithm 带必经节点的有向加权图最短路径

Algorithm 带必经节点的有向加权图最短路径,algorithm,graph,graph-algorithm,dijkstra,shortest-path,Algorithm,Graph,Graph Algorithm,Dijkstra,Shortest Path,你好,我正在寻找解决这个问题的最佳算法 我有一个图形,我必须找到指定的开始和结束节点之间的最短路径,但必须传递到特定的用户输入节点 必须通过的节点没有顺序,每个节点可以访问多次 如果考虑每个节点必须通过一个特定的顺序来达到,那么计算每一个停止的最短路径将更容易,对吗? K最短路径是解决这个问题的方法吗?计算最短路径并从那里开始,直到我们找到所有必须通过节点的最短路径 下面是我绘制的一个示例图 节点4和6必须通过,我需要找到1和5之间的最短路径。众所周知,2条不相交路径的问题是。他们的证明有一个

你好,我正在寻找解决这个问题的最佳算法

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

必须通过的节点没有顺序,每个节点可以访问多次

如果考虑每个节点必须通过一个特定的顺序来达到,那么计算每一个停止的最短路径将更容易,对吗? K最短路径是解决这个问题的方法吗?计算最短路径并从那里开始,直到我们找到所有必须通过节点的最短路径

下面是我绘制的一个示例图


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

众所周知,2条不相交路径的问题是。他们的证明有一个图G和两个源顶点s1、s2以及两个终端t1、t2。任务是找到两条内部顶点不相交的路径p1,p2 s.t p1连接s1到t1,p2连接s2,t2。我们可以简单地用不相交的路径为您的问题建模。在上述硬度证明中提供的图形中,只需识别s2、t1,并将其设为新的顶点s2t1。然后,在原始图中存在两条不相交的路径,当且仅当存在一条从s1开始经过s2t1并在t2结束的路径。这意味着即使在有向图中找到这样的路径也很困难。甚至没有优化版本


但是,如果图形有特殊的结构,它会变得更容易。就像在无环图上一样,这更容易。

众所周知,2条不相交的路径是一个问题。他们的证明有一个图G和两个源顶点s1、s2以及两个终端t1、t2。任务是找到两条内部顶点不相交的路径p1,p2 s.t p1连接s1到t1,p2连接s2,t2。我们可以简单地用不相交的路径为您的问题建模。在上述硬度证明中提供的图形中,只需识别s2、t1,并将其设为新的顶点s2t1。然后,在原始图中存在两条不相交的路径,当且仅当存在一条从s1开始经过s2t1并在t2结束的路径。这意味着即使在有向图中找到这样的路径也很困难。甚至没有优化版本


但是,如果图形有特殊的结构,它会变得更容易。例如,在非循环图上更容易。

如果中间节点上有严格的顺序,那么您是正确的,只需按顺序找到每个节点之间的最短路径即可。如果你不关心排序,那么k-最短路径最终会给你答案,但这将是低效的。在这种情况下,贪婪算法可能是最好的选择,如果可以得到一条可能不是绝对最短的路径。看起来与此类似:另一个问题是非循环图。答案也是最短路径,而不是路径。如果中间节点上有严格的顺序,则可能重复,那么您是正确的,只需按顺序找到每个节点之间的最短路径。如果你不关心排序,那么k-最短路径最终会给你答案,但这将是低效的。在这种情况下,贪婪算法可能是最好的选择,如果可以得到一条可能不是绝对最短的路径。看起来与此类似:另一个问题是非循环图。另外,答案只是为了最短的步行,而不是一条路。可能是重复的