Hacktober-Fest-2021 icon indicating copy to clipboard operation
Hacktober-Fest-2021 copied to clipboard

Kosaraju Algorithm

Open pshivesh8 opened this issue 3 years ago • 1 comments

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.

  1. 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.
  2. Reverse directions of all arcs to obtain the transpose graph.
  3. 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.

pshivesh8 avatar Oct 18 '21 09:10 pshivesh8