CS 5050 Program 2 (20 points) Biconnected Components Summary: CS 5050 Program 2 (20 points) Biconnected Components Introduction The algorithm in the book is a little more difficult to implement as it involves creating a new graph. For this assignment, we will find articulation points as follows: 1. Do a depth first search, numbering the nodes as they are visited in preorder. Call the numbers num(v). If a node has already been visited, we consider the edge to it as a "back edge". The undirected edges become "directed" by the order they are visited. 2. The root is an articulation point if it has two children. Otherwise, its removal would create two subtrees. 3. For each node compute the lowest vertex that can be reached by zero or more tree edges followed by possibly one back edge. Low(v) is computed via a postorder traversal and is the minimum of 1. Num(v) [taking no edges] 2. the lowest back edge among all back edges (v,w) [no tree edges] 3. The lowest Low(w) among all tree edges (v,w) [some tree edges and a back edge] Given Low, we find articulation points as: 1. The root is an articulation point if it has more than one child 2. Any other vertex v is an articulation point if and only if v has some child in the tree such that Low(w) >=Num(v) In the example below, the original graph is on the left. The nodes in the graph to the right are labeled with Collections: Computer Technologies and Information Sciences