Graph – Strongly Connected Component



Graph – Strongly Connected Component

What is Strongly Connected Component?
A Graph is Strongly Connected Component if there is a PATH (not edge) between every pair of nodes.

[Undirected Graph]
For undirected graph, start at any vertex and do a DFS traversal, if every other vertices are reachable, then the graph is strongly connected.

[Directed Graph]
For directed graph, things become a little bit complicated. Because whether all other vertices are reachable is determined by the starting point.

For example, in the following example, which is not a strongly connected component. If we start from vertex 2, then every other vertices are reachable through one DFS traversal, but if we start at 4, we can not reach all other vertices.

Screen Shot 2016-06-09 at 00.12.25

 

[Algorithm] – Directed Graph
So a single DFS is not enough to check whether a Directed Graph is strongly connected.

Pseudo-Code
1. DFS from v, if any vertex is not reachable, return false
2. Reversed all arcs in the graph
3. DFS from the same v, if any vertex is not reachable, return false


Read full article from Graph – Strongly Connected Component


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts