[英]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.