Is there an efficient algorithm for detecting cycles within a directed graph?
I have a directed graph representing a schedule of jobs that need to be executed, a job being a node and a dependency being an edge. I need to detect the error case of a cycle within this graph leading to cyclic dependencies.
It would be better to detect all cycles so they could be fixed in one go.
Tarjan's strongly connected components algorithm has O(|E| + |V|)
time complexity.
For other algorithms, see Strongly connected components on Wikipedia.