Strong connectivity augmentation

From Wikipedia, the free encyclopedia

The graph needs a minimum of 2 edges added to become a strongly connected graph, such as the 2 dashed edges

Strong connectivity augmentation is a computational problem in the mathematical study of graph algorithms, in which the input is a directed graph and the goal of the problem is to add a small number of edges, or a set of edges with small total weight, so that the added edges make the graph into a strongly connected graph.

The strong connectivity augmentation problem was formulated by Kapali Eswaran and Robert Tarjan (1976). They showed that a weighted version of the problem is NP-complete, but the unweighted problem can be solved in linear time.[1] Subsequent research has considered the approximation ratio and parameterized complexity of the weighted problem.[2][3]

In the unweighted strong connectivity augmentation problem, the input is a directed graph and the goal is to add as few edges as possible to it to make the result into a strongly connected graph. The algorithm for the unweighted case by Eswaran and Tarjan considers the condensation of the given directed graph, a directed acyclic graph that has one vertex per strongly connected component of the given graph. Letting denote the number of source vertices in the condensation (strongly connected components with at least one outgoing edge but no incoming edges), denote the number of sink vertices in the condensation (strongly connected components with incoming but no outgoing edges), and denote the number of isolated vertices in the condensation (strongly connected components with neither incoming nor outgoing edges), they observe that the number of edges to be added is necessarily at least . This follows because edges need to be added to provide an incoming edge for each source or isolated vertex, and symmetrically at least edges need to be added to provide an outgoing edge for each sink or isolated vertex. Their algorithm for the problem finds a set of exactly edges to add to the graph to make it strongly connected.[1]

Their algorithm uses a depth-first search on the condensation to find a collection of pairs of sources and sinks, with the following properties:[1]

  • The source of each pair can reach the sink of the pair by a path in the given graph.
  • Every source that is not in one of the pairs can reach a sink in one of the pairs.
  • Every sink that is not in one of the pairs can be reached from a source in one of the pairs.

A minor error in the part of their algorithm that finds the pairs of sources and sinks was later found and corrected.[4]

Once these pairs have been found, one can obtain a strong connectivity augmentation by adding three sets of edges:[1]

  • The first set of edges connects the pairs and the isolated vertices of the condensation into a single cycle, consisting of one edge per pair or isolated vertex.
  • The second set of edges each connect one of the remaining sinks to one of the remaining sources (chosen arbitrarily). This links both the source and the sink to the cycle of pairs and isolated vertices at a cost of one edge per source-sink pair.
  • Once the previous two sets of edges have either exhausted all sources or exhausted all sinks, the third set of edges links each remaining source or sink to this cycle by adding one more edge per source or sink.

The total number of edges in these three sets is .[1]

Weighted and parameterized version

Bipartite version and grid bracing application

References

Related Articles

Wikiwand AI