Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Biconnected component

From Wikipedia, the free encyclopedia
(Redirected fromArticulation point)
Maximal biconnected subgraph
Not to be confused withvertex cut.
An example graph with biconnected components marked
Each color corresponds to a biconnected component. Multi-colored vertices are cut vertices, and thus belong to multiple biconnected components.

Ingraph theory, abiconnected component orblock (sometimes known as a2-connected component) is a maximalbiconnectedsubgraph. Anyconnected graph decomposes into atree of biconnected components called theblock-cut tree of the graph. The blocks are attached to each other at sharedvertices calledcut vertices orseparating vertices orarticulation points. Specifically, acut vertex is any vertex whose removal increases the number ofconnected components.[1] A block containing at most one cut vertex is called aleaf block, it corresponds to aleaf vertex in the block-cut tree.

Algorithms

[edit]

Linear time depth-first search

[edit]

The classicsequential algorithm for computing biconnected components in a connectedundirected graph is due toJohn Hopcroft andRobert Tarjan (1973).[2] It runs inlinear time, and is based ondepth-first search. This algorithm is also outlined as Problem 22-2 ofIntroduction to Algorithms (both 2nd and 3rd editions).

The idea is to run a depth-first search while maintaining the following information:

  1. the depth of each vertex in the depth-first-search tree (once it gets visited), and
  2. for each vertexv, the lowest depth of neighbors of all descendants ofv (includingv itself) in the depth-first-search tree, called thelowpoint.

The depth is standard to maintain during a depth-first search. The lowpoint ofv can be computed after visiting all descendants ofv (i.e., just beforev gets popped off the depth-first-searchstack) as the minimum of the depth ofv, the depth of all neighbors ofv (other than the parent ofv in the depth-first-search tree) and the lowpoint of all children ofv in the depth-first-search tree.

The key fact is that a nonroot vertexv is a cut vertex (or articulation point) separating two biconnected components if and only if there is a childy ofv such thatlowpoint(y) ≥ depth(v). This property can be tested once the depth-first search returned from every child ofv (i.e., just beforev gets popped off the depth-first-search stack), and iftrue,v separates the graph into different biconnected components. This can be represented by computing one biconnected component out of every suchy (a component which containsy will contain the subtree ofy, plusv), and then erasing the subtree ofy from the tree.

The root vertex must be handled separately: it is a cut vertex if and only if it has at least two children in the DFS tree. Thus, it suffices to simply build one component out of each child subtree of the root (including the root).

Pseudocode

[edit]
GetArticulationPoints(i, d)    visited[i] :=true    depth[i] := d    low[i] := d    childCount := 0    isArticulation :=falsefor each niin adj[i]doifnot visited[ni]then            parent[ni] := i            GetArticulationPoints(ni, d + 1)            childCount := childCount + 1if low[ni] ≥ depth[i]then                isArticulation :=true            low[i] := Min (low[i], low[ni])else if ni ≠ parent[i]then            low[i] := Min (low[i], depth[ni])if (parent[i] ≠nulland isArticulation)or (parent[i] =nulland childCount > 1)then        Output i as articulation point

Note that the terms child and parent denote the relations in the DFS tree, not the original graph.

A demo of Tarjan's algorithm to find cut vertices.D denotes depth andL denotes lowpoint.


Other algorithms

[edit]

A simple alternative to the above algorithm useschain decompositions, which are special ear decompositions depending onDFS-trees.[3] Chain decompositions can be computed in linear time by thistraversing rule. LetC be a chain decomposition ofG. ThenG is 2-vertex-connected if and only ifG has minimumdegree 2 andC1 is the onlycycle inC. This gives immediately a linear-time 2-connectivity test and can be extended to list all cut vertices ofG in linear time using the following statement: A vertexv in a connected graphG (with minimum degree 2) is a cut vertex if and only ifv is incident to abridge orv is the first vertex of a cycle inCC1. The list of cut vertices can be used to create theblock-cut tree ofG in linear time.

In theonline version of the problem, vertices and edges are added (but not removed) dynamically, and a data structure must maintain the biconnected components.Jeffery Westbrook andRobert Tarjan (1992)[4] developed an efficient data structure for this problem based ondisjoint-set data structures. Specifically, it processesn vertex additions andm edge additions inO(mα(m,n)) total time, whereα is theinverse Ackermann function. This time bound is proved to be optimal.

Uzi Vishkin andRobert Tarjan (1985)[5] designed aparallel algorithm on CRCWPRAM that runs inO(logn) time withn +m processors.

Related structures

[edit]

Equivalence relation

[edit]

One can define abinary relation on the edges of an arbitrary undirected graph, according to which two edgese andf are related if and only if eithere =f or the graph contains asimple cycle through bothe andf. Every edge is related to itself, and an edgee is related to another edgef if and only iff is related in the same way toe. Less obviously, this is atransitive relation: if there exists a simple cycle containing edgese andf, and another simple cycle containing edgesf andg, then one can combine these two cycles to find a simple cycle throughe andg. Therefore, this is anequivalence relation, and it can be used to partition the edges into equivalence classes, subsets of edges with the property that two edges are related to each other if and only if they belong to the same equivalence class. The subgraphs formed by the edges in each equivalence class are the biconnected components of the given graph. Thus, the biconnected components partition the edges of the graph; however, they may share vertices with each other.[6]

Block graph

[edit]

Theblock graph of a given graphG is theintersection graph of its blocks. Thus, it has one vertex for each block ofG, and an edge between two vertices whenever the corresponding two blocks share a vertex.A graphH is the block graph of another graphG exactly when all the blocks ofH are complete subgraphs. The graphsH with this property are known as theblock graphs.[7]

Block-cut tree

[edit]

Acutpoint,cut vertex, orarticulation point of a graphG is a vertex that is shared by two or more blocks. The structure of the blocks and cutpoints of a connected graph can be described by atree called theblock-cut tree orBC-tree. This tree has a vertex for each block and for each articulation point of the given graph. There is an edge in the block-cut tree for each pair of a block and an articulation point that belongs to that block.[8]

A graph, and its block-cut tree.
Blocks:
b1 = [1,2]
b2 = [2,3,4]
b3 = [2,5,6,7]
b4 = [7,8,9,10,11]
b5 = [8,12,13,14,15]
b6 = [10,16]
b7 = [10,17,18]
Cutpoints:
c1 = 2
c2 = 7
c3 = 8
c4 = 10

See also

[edit]

Notes

[edit]
  1. ^AL-TAIE, MOHAMMED ZUHAIR. KADRY, SEIFEDINE (2019). "3. Graph Theory".PYTHON FOR GRAPH AND NETWORK ANALYSIS. SPRINGER.ISBN 978-3-319-85037-5.OCLC 1047552679.A cut-vertex is a vertex that if removed, the number of network components increases.{{cite book}}: CS1 maint: multiple names: authors list (link)
  2. ^Hopcroft, J.; Tarjan, R. (1973)."Algorithm 447: efficient algorithms for graph manipulation".Communications of the ACM.16 (6):372–378.doi:10.1145/362248.362272.
  3. ^Schmidt, Jens M. (2013), "A Simple Test on 2-Vertex- and 2-Edge-Connectivity",Information Processing Letters,113 (7):241–244,arXiv:1209.0700,doi:10.1016/j.ipl.2013.01.016.
  4. ^Westbrook, J.; Tarjan, R. E. (1992). "Maintaining bridge-connected and biconnected components on-line".Algorithmica.7 (1–6):433–464.doi:10.1007/BF01758773.
  5. ^Tarjan, R.; Vishkin, U. (1985). "An Efficient Parallel Biconnectivity Algorithm".SIAM J. Comput.14 (4):862–874.CiteSeerX 10.1.1.465.8898.doi:10.1137/0214061.
  6. ^Tarjan & Vishkin (1985) credit the definition of this equivalence relation toHarary (1969); however, Harary does not appear to describe it in explicit terms.
  7. ^Harary, Frank (1969),Graph Theory, Addison-Wesley, p. 29.
  8. ^Harary (1969), p. 36.

References

[edit]

External links

[edit]
Retrieved from "https://en.wikipedia.org/w/index.php?title=Biconnected_component&oldid=1233253447"
Category:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp