algorithm - 确定 DAG 是否具有从所有其他顶点可达的顶点的线性时间算法?

标签 algorithm graph language-agnostic graph-theory directed-acyclic-graphs

我有以下作业问题: DAG:设计一个线性时间算法 (O(|E|+|V|)) 来确定 DAG 是否有一个顶点可以从所有其他顶点到达,如果是,找一个。

现在我解决这个问题的方法如下: ->首先找到拓扑排序中最后出现的顶点(称为 V)。

->现在,判断反向图的每个顶点是否都可以从这个顶点V到达。

-> 如果每个顶点都是可达的,则顶点 V 是所需的顶点,否则图中没有任何其他顶点可达的顶点。

这种方法是否正确?

附言。这个问题的解决方案提示说我应该计算每个顶点的出度。但我无法理解计算出度有何帮助。

最佳答案

考虑一个弧 (u, v) ∈ E。由于图是非循环的,u 无法从 v 访问。因此 u 不能解决问题。由此可见,只有出度为零的顶点才是解。

此外,必须恰好有一个出度为零的顶点,否则问题无解。

我将其余部分留给读者作为练习。

关于algorithm - 确定 DAG 是否具有从所有其他顶点可达的顶点的线性时间算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15716318/

相关文章:

arrays - 给定一个有序数组,其中有几个数字是颠倒的。如何排序?

algorithm - 欧氏算法的时间复杂度

algorithm - 如何为 pacman 实现 BFS 算法?

language-agnostic - 近距离重用模型组件的最佳实践?

java - 图形点击界面

python - 带剖面的 3D 曲面图

language-agnostic - 有趣的NLP/机器学习风格项目——分析隐私政策

python - 控制下一步的数据结构

php - 优化PHP算法

algorithm - 具有最小边缘的 Dijkstra 算法