给定一个有向图及其一些节点,如何修剪无法到达任何给定节点的节点。 (我将其称为叶组件,我不确定这是一个正确的术语)
有没有已知的算法可以有效地解决这个问题?
如果您能指出一些 Java 开源代码,那就完美了。
谢谢。
最佳答案
从给定的一组节点开始广度优先搜索或深度优先搜索,并标记搜索遍历的所有节点。之后,所有未标记的节点都无法从给定的节点集访问,并且可以被修剪。如果n是顶点数,m是边数,那么这将在O(n + m)内解决您的问题。 p>
我个人更喜欢Tinkerpop Blueprints作为我在 JVM/Java/Scala 中进行图形处理的主要库。
关于java - 修剪有向图的叶子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12770050/