让 G 成为有向图,可能包含周期,让 m 和 n 成为此图中的两个节点。我有兴趣在 G 中查找 a 中的所有节点,以便有来自 a 的路径 - >> n 1 - > n 2 ... - > n 以及 a - > m 1 - > ... - > 米。对于我的应用程序, a 节点的集合可以被认为是 n 和 m 的共同祖先(周期和"我'我自己的爷爷"尽管如此。
我的第一个无智能的方法是在 n 和 m 的前端边缘上执行深度优先搜索,遍历图形并收集所有访问过的节点(< EM> O(n)的)。然后我执行这两组( O(n))的交集,从而产生预期的 O(n)复杂性。
在实施之前,我想确保这是一种有效的方法。我的图可以有几十甚至几千个节点,虽然它们很稀疏,但算法需要足够快才能实现交互(即<0.1秒)。