繁体   English   中英

加权有向图中的最短路径

[英]Shortest path in weighted directed graph

我需要在加权有向图中找到两个节点 s,t 之间的最短路径。 以下是限制:

  1. 权重可以为负。
  2. 路径必须通过特定的边,让她从节点 u 到 v 称她为 e 和 shes。
  3. 输出路径必须简单,即我们只通过一个节点一次。

现在我有一个解决方案的想法,但我不知道输出是否是一个简单的路径。

我的解决方案是运行 bellman Ford 算法两次,一次从 s,第二次从 v。最短路径将是 s 到 u,u 到 v,v 到 t。

因为我希望它很简单,所以我不会使用我在第二次 bellman Ford 运行中已经使用过的节点。

因为我希望它最短,所以我会检查在从 s 到 u 运行之前从 v 到 t 运行 bellman Ford 是否比其他方式更快(如果有一个节点,则两者都使用放置它的最佳位置)。

感谢帮助者!

即使找到这样的路径也是 NP 完全的。 这是因为两个顶点/边不相交的路径问题是有向图中的 NPC。 假设边 e=(u,v) 那么你正在寻找一个 (s,u), (v,t) 不相交的路径,但这在有向图中是 NP 完全的。

在这里你可以找到硬度结果: https : //www.sciencedirect.com/science/article/pii/0304397580900092

您当前基于 Bellman-ford 的算法并未针对所有情况给出正确答案(在有路径时可能无法找到路径),但是,它可能是一个很好的启发式方法。 如果你的图是无向图,那么任务就容易多了。

如果您允许重复顶点,那么任何最短路径算法都是正确的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM