有向图中的顶点使得存在到该每个顶点的路径

时间:2013-12-23 06:12:05

标签: algorithm graph

如何找到有向图中的所有顶点,使得每个顶点都可以从这个顶点到达?现在我只能“发明”O(| V | ^ 3)算法 - 来自每个顶点的DFS / BFS,但我敢肯定,有一种更快的方法可以解决这个问题。

谢谢!

2 个答案:

答案 0 :(得分:4)

运行strongly connected components algorithm将图表折叠为其directed acyclic graph强连接组件。必须至少有一个强连接组件没有传入边缘。如果只有一个,那么该组件中的节点就是您要查找的节点。如果有多个强连接组件没有传入边缘,则没有可从其访问所有其他节点的节点。

答案 1 :(得分:0)

编辑:见下面的评论!

有时这完全是关于术语的。这里神奇的词是可达性(见Wikipedia)。不幸的是,我认为你不会喜欢这些结果。

  • 如果不是所有答案都需要,实际上建议运行BFS / DFS。
  • 否则,请使用Floyd-Warshall算法。仍然在O(| V | 3 )中运行。
  • 特殊情况下存在某些优化算法 - 有关详细信息,请参阅维基百科。

所以这可能不是你想听到的。