【发布时间】:2014-08-22 14:02:54
【问题描述】:
我有一个循环有向图,我想知道是否有任何算法(最好是最佳算法)来列出任意两个节点之间的共同后代?与最低共同祖先 (LCA) 所做的几乎相反。
【问题讨论】:
-
在循环图中,节点可以是自身的后代。
-
循环图中没有真正的后代。您正在寻找可从两个源顶点到达的一组顶点?
-
您的意思是“常见相邻节点列表”吗?
-
只需在两个节点上进行 DFS 并选择各自节点集的交集。
-
我认为没有比使用 DFS 枚举 A 和 B 中所有可达节点并计算交集更好的解决方案了。您可以引入一些优化:如果您正在寻找 A 可到达的节点并偶然发现 B,您可以停止寻找并列出从 B 可到达的所有内容。
标签: algorithm graph-theory cyclic-graph