我正在使用类似all simple paths问题的算法,有两个曲折。
我知道这可以通过运行每个{sources}和{destinations}组合的DFS算法来实现,然后删除所有的弯路。然而,我想这会很慢。
有没有办法在一个算法中实现这一点?或大部分?
修改
请注意,我不知道边缘重量。假设我们找到以下三个路径(其中每个字母是边缘,而不是节点):( A-B-C-G),(A-B-G)和(A-C-D-E-F-G)。可以删除第一个路径,因为第二个路径是其中的一个子集。但是B可能比C,D,E和F组合更贵!所以在这种情况下,我必须知道这两条路径。
我不是在寻找最短的路径,我正在寻找所有不包含绕道的路径。