给定图g
和一组N个节点my_nodes = [n1, n2, n3, ...]
,如何检查是否存在包含所有N个节点的路径?
在all_simple_paths
中检查包含my_nodes
中所有节点的路径会随着图表的增长而变得计算繁琐
上述搜索可以限制为my_nodes
成对夫妻之间的路径。这仅在很小程度上降低了复杂性。另外,它需要大量的python循环,这很慢
是否有更快的解决方案?
答案 0 :(得分:2)
你可以在这里尝试一些贪心算法,从所有节点开始寻找路径查找,并逐步探索你的图形。无法提供一些真实的样本,但伪代码应该是这样的:
n
个节点启动n
路径存根以查找此算法具有复杂性O(E + N)
,因为您以非递归方式访问边和节点。
然而,在有向图的情况下,"合并"将会更复杂,但仍然会完成,但在这种情况下,最糟糕的情况可能需要很长时间。
<强>更新强>:
正如您所说的那样,上述方法并不适用。在这种情况下,您可以像这样简化您的任务:
O(E + N)
。如果您需要一些现成的解决方案,可以使用NetworkX method for this。