我有一张图。我想获得源节点和目标节点之间的所有可能路径。
我正在寻找一种高性能算法,因为我必须对两组节点(源节点和目标节点)执行此操作
让我们举个例子。
鉴于此图,我想获取之间的所有可能路径:
sources = [0, 4, 5]
targets = [2, 3]
结果应为:
0-1-2
0-1-2-3
4-3
4-3-2
4-3-2
5-4-3
5-4-3-2
答案 0 :(得分:1)
可以使用depth-first搜索来解决两个节点之间所有路径的枚举。但是,应考虑几点。
如果允许输入图包含循环,并且允许路径中的节点重复,则在两个金缕梅结点之间可能存在无限多的路径。
即使不允许重复节点,给定节点对之间的路径数也可能在输入中的节点数上成倍增长;因此,有必要弄清楚什么是“性能”算法,因为通常的多项式有限的运行时复杂度无法满足要求-输出可能会按输入大小呈指数增长。