57 research outputs found
Strong Connectivity in Directed Graphs under Failures, with Application
In this paper, we investigate some basic connectivity problems in directed
graphs (digraphs). Let be a digraph with edges and vertices, and
let be the digraph obtained after deleting edge from . As
a first result, we show how to compute in worst-case time: The
total number of strongly connected components in , for all edges
in . The size of the largest and of the smallest strongly
connected components in , for all edges in .
Let be strongly connected. We say that edge separates two vertices
and , if and are no longer strongly connected in .
As a second set of results, we show how to build in time -space
data structures that can answer in optimal time the following basic
connectivity queries on digraphs: Report in worst-case time all
the strongly connected components of , for a query edge .
Test whether an edge separates two query vertices in worst-case
time. Report all edges that separate two query vertices in optimal
worst-case time, i.e., in time , where is the number of separating
edges. (For , the time is ).
All of the above results extend to vertex failures. All our bounds are tight
and are obtained with a common algorithmic framework, based on a novel compact
representation of the decompositions induced by the -connectivity (i.e.,
-edge and -vertex) cuts in digraphs, which might be of independent
interest. With the help of our data structures we can design efficient
algorithms for several other connectivity problems on digraphs and we can also
obtain in linear time a strongly connected spanning subgraph of with
edges that maintains the -connectivity cuts of and the decompositions
induced by those cuts.Comment: An extended abstract of this work appeared in the SODA 201
Join-Reachability Problems in Directed Graphs
For a given collection G of directed graphs we define the join-reachability
graph of G, denoted by J(G), as the directed graph that, for any pair of
vertices a and b, contains a path from a to b if and only if such a path exists
in all graphs of G. Our goal is to compute an efficient representation of J(G).
In particular, we consider two versions of this problem. In the explicit
version we wish to construct the smallest join-reachability graph for G. In the
implicit version we wish to build an efficient data structure (in terms of
space and query time) such that we can report fast the set of vertices that
reach a query vertex in all graphs of G. This problem is related to the
well-studied reachability problem and is motivated by emerging applications of
graph-structured databases and graph algorithms. We consider the construction
of join-reachability structures for two graphs and develop techniques that can
be applied to both the explicit and the implicit problem. First we present
optimal and near-optimal structures for paths and trees. Then, based on these
results, we provide efficient structures for planar graphs and general directed
graphs
Incremental -Edge-Connectivity in Directed Graphs
In this paper, we initiate the study of the dynamic maintenance of
-edge-connectivity relationships in directed graphs. We present an algorithm
that can update the -edge-connected blocks of a directed graph with
vertices through a sequence of edge insertions in a total of time.
After each insertion, we can answer the following queries in asymptotically
optimal time: (i) Test in constant time if two query vertices and are
-edge-connected. Moreover, if and are not -edge-connected, we can
produce in constant time a "witness" of this property, by exhibiting an edge
that is contained in all paths from to or in all paths from to .
(ii) Report in time all the -edge-connected blocks of . To the
best of our knowledge, this is the first dynamic algorithm for -connectivity
problems on directed graphs, and it matches the best known bounds for simpler
problems, such as incremental transitive closure.Comment: Full version of paper presented at ICALP 201
Dominators in Directed Graphs: A Survey of Recent Results, Applications, and Open Problems
The computation of dominators is a central tool in program optimization and code generation, and it has applications in other diverse areas includingconstraint programming, circuit testing, and biology. In this paper we survey recent results, applications, and open problems related to the notion of dominators in directed graphs,including dominator verification and certification, computing independent spanning trees, and connectivity and path-determination problems in directed graphs
Approximating the Smallest Spanning Subgraph for 2-Edge-Connectivity in Directed Graphs
Let be a strongly connected directed graph. We consider the following
three problems, where we wish to compute the smallest strongly connected
spanning subgraph of that maintains respectively: the -edge-connected
blocks of (\textsf{2EC-B}); the -edge-connected components of
(\textsf{2EC-C}); both the -edge-connected blocks and the -edge-connected
components of (\textsf{2EC-B-C}). All three problems are NP-hard, and thus
we are interested in efficient approximation algorithms. For \textsf{2EC-C} we
can obtain a -approximation by combining previously known results. For
\textsf{2EC-B} and \textsf{2EC-B-C}, we present new -approximation
algorithms that run in linear time. We also propose various heuristics to
improve the size of the computed subgraphs in practice, and conduct a thorough
experimental study to assess their merits in practical scenarios
Finding Dominators via Disjoint Set Union
The problem of finding dominators in a directed graph has many important
applications, notably in global optimization of computer code. Although linear
and near-linear-time algorithms exist, they use sophisticated data structures.
We develop an algorithm for finding dominators that uses only a "static tree"
disjoint set data structure in addition to simple lists and maps. The algorithm
runs in near-linear or linear time, depending on the implementation of the
disjoint set data structure. We give several versions of the algorithm,
including one that computes loop nesting information (needed in many kinds of
global code optimization) and that can be made self-certifying, so that the
correctness of the computed dominators is very easy to verify
Linear-Time Algorithms for Computing Twinless Strong Articulation Points and Related Problems
A directed graph G = (V,E) is twinless strongly connected if it contains a strongly connected spanning subgraph without any pair of antiparallel (or twin) edges. The twinless strongly connected components (TSCCs) of a directed graph G are its maximal twinless strongly connected subgraphs. These concepts have several diverse applications, such as the design of telecommunication networks and the structural stability of buildings. A vertex v ? V is a twinless strong articulation point of G, if the deletion of v increases the number of TSCCs of G. Here, we present the first linear-time algorithm that finds all the twinless strong articulation points of a directed graph. We show that the computation of twinless strong articulation points reduces to the following problem in undirected graphs, which may be of independent interest: Given a 2-vertex-connected undirected graph H, find all vertices v for which there exists an edge e such that H?{v,e} is not connected. We develop a linear-time algorithm that not only finds all such vertices v, but also computes the number of edges e such that H?{v,e} is not connected. This also implies that for each twinless strong articulation point v which is not a strong articulation point in a strongly connected digraph G, we can compute the number of TSCCs in G?v
- …