Hacktober-Fest-2021
Hacktober-Fest-2021 copied to clipboard
Kosaraju Algorithm
Given a Directed Graph with V vertices (Numbered from 0 to V-1) and E edges, Find the number of strongly connected components in the graph.
- Create an empty stack ‘S’ and do a DFS traversal of a graph. In DFS traversal, after calling recursive DFS for adjacent vertices of a vertex, push the vertex to stack. In the above graph, if we start DFS from vertex 0, we get vertices in the stack as 1, 2, 4, 3, 0.
- Reverse directions of all arcs to obtain the transpose graph.
- One by one pop a vertex from S while S is not empty. Let the popped vertex be ‘v’. Take v as the source and do DFS. The DFS starting from v prints strongly connected component of v. In the above example, we process vertices in order 0, 3, 4, 2, 1 (One by one popped from stack).
Alternatives of this solution are Tarjan's Algorithm and Path-Based Algorithm.