找到两组

时间:2015-11-26 11:11:37

标签: algorithm graph-theory path-finding

我正在使用类似all simple paths问题的算法,有两个曲折。

  1. 我想找到两个不相交的节点集之间的路径,而不是仅搜索两个唯一节点之间的路径。 {sources}和{destinations}。
  2. 我只对没有弯路的路径感兴趣。如果我找到一条路径(A-B-D),那么我对(A-B-C-D)不感兴趣,因为它总是比前者更糟糕。每个边缘的权重在分析时都是未知的,但它们总是正的。
  3. 我知道这可以通过运行每个{sources}和{destinations}组合的DFS算法来实现,然后删除所有的弯路。然而,我想这会很慢。

    有没有办法在一个算法中实现这一点?或大部分?

    修改

    请注意,我不知道边缘重量。假设我们找到以下三个路径(其中每个字母是边缘,而不是节点):( A-B-C-G),(A-B-G)和(A-C-D-E-F-G)。可以删除第一个路径,因为第二个路径是其中的一个子集。但是B可能比C,D,E和F组合更贵!所以在这种情况下,我必须知道这两条路径。

    我不是在寻找最短的路径,我正在寻找所有不包含绕道的路径。

0 个答案:

没有答案