【问题标题】:Find paths between two sets of nodes查找两组节点之间的路径
【发布时间】:2019-05-08 08:21:09
【问题描述】:
我有一个图表。我想获取源节点和目标节点之间的所有可能路径。
我正在寻找一种高性能算法,因为我必须为两组节点(源和目标)这样做
让我们举个例子。
鉴于此图,我想获取以下之间的所有可能路径:
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
【问题讨论】:
标签:
graph-theory
graph-algorithm
【解决方案1】:
两个节点之间的所有路径的枚举可以通过使用depth-first搜索来解决。但是,有几点需要考虑。
如果允许输入图包含循环并且允许路径中的节点重复,则可能在一对 ginven 节点之间存在无限多条路径。
即使不允许节点重复,给定节点对之间的路径数量也可能在输入中的节点数量呈指数增长;因此,有必要澄清什么是“高性能”算法,因为通常的多项式有界运行时复杂度不符合条件 - 输出可能会随着输入的大小呈指数增长。