繁体   English   中英

Python - 如何在不使用堆栈和 class 的情况下检查有向无环图?

[英]Python - How do I do check for a Directed Acyclic Graph without using stack and class?

所以我要做的是创建一个 function 来检查一个图是否是有向无环图(DAG)。

所以我得到顶点和邻接列表只是为了开始我的代码。

问题是我不允许使用堆栈(来自线性数据结构)、类,也不允许使用其他 Python 库/包,只能使用纯 python。 (所以不允许 networkx/matplotlib)

我知道有向无环图至少有 1 个拓扑排序,但我不确定如何编码。 现在,我目前的想法是使用递归 DFS 和拓扑排序,但我(再次)不确定这些是要组合在一起还是我需要单独的函数。

也许这有效:

对于所有节点中的 nodeY:

使用从当前 nodeY 开始的广度优先搜索算法。 在 Python 中

创建一个set()并添加 nodeY。

在您访问的每个 nodeX 上,检查当前 nodeX 是否已经在集合中。

如果是,则该图是循环的,算法已完成。 如果没有,则将当前 nodeX 添加到集合中。

如果您通过广度优先搜索访问了所有可达节点,则继续将下一个节点作为 nodeY 作为算法的起点。

如果没有下一个 nodeY 则结束算法。 -> 无环

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM