c++ - 从文本文件中检测有向图中的循环

标签 c++ graph directed-acyclic-graphs

我正在尝试从文本文件中读取值,然后确定它表示的图形是否为 DAG。我想知道在时间效率方面最快的方法是什么。

这是文本文件

3
2
1,2,
2,3

我正在考虑使用给定的信息制作邻接列表,然后从那里移动。非常感谢任何帮助

最佳答案

一种方式,虽然可能不是最快的方式,是到topologically sort图。当且仅当算法失败时,该图才有循环(参见 Kahn's algorithm )。

运行时间是O(|V| + |E|),其中|V|是顶点数,|E| 是边的数量。

Bender 等人发表了一篇论文。 (Robert Tarjan 是作者之一),A NEW APPROACH TO INCREMENTAL CYCLE DETECTION AND RELATED PROBLEMS ,您可能想看一看。

另一篇相关论文是 Incremental Cycle Detection, Topological Ordering, and Strong Component Maintenance bu Haeupler 等人。 (Tarjan 再次成为作者之一)。

关于c++ - 从文本文件中检测有向图中的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36344242/

相关文章:

java - Level Order tree 遍历通用树,逐层显示树

xslt - 使用 XSLT/XPath 查找有向无环图 (DAG) 最小元素(顶点)?

c++ - c++ 根据时间创建对象

c++ - OpenMP 线程数问题

javascript - vis.js Graph3d 条形图 - 可能的错误?

r - 同一图上的多条频率线,其中 y 是字符值

java - 如何将 "levels"分配给无环有向图的顶点?

c++ - 使用 SWIG 包装 Octave 的 C++ API

c++ - 高CPU负载。 C++/sfml

algorithm - 图中有多个 "must have"节点的最短路径