How do I check if a directed graph is acyclic? And how is the algorithm called? I would appreciate a reference.
Start a DFS at that node. When traversing each edge, check whether the edge points back to a node already on your stack. This indicates the existence of a cycle. If you find no such edge, there are no cycles in that connected component.
If you are able to find edge of opposite direction for each edge in your list, you can treat your graph as undirected (or directed with 2 opposite directed edges per pair of connected nodes). Otherwise, it is directed. (considering example above, if for vertex b there is no vertex a in its adjacent vertices list).
A directed acyclic graph is a directed graph that has no cycles. A vertex v of a directed graph is said to be reachable from another vertex u when there exists a path that starts at u and ends at v. As a special case, every vertex is considered to be reachable from itself (by a path with zero edges).
A cyclic graph is a graph containing at least one graph cycle. A graph that is not cyclic is said to be acyclic. A cyclic graph possessing exactly one (undirected, simple) cycle is called a unicyclic graph. Cyclic graphs are not trees.
I would try to sort the graph topologically, and if you can't, then it has cycles.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With