27,817 research outputs found
Faster Algorithms for Computing Maximal 2-Connected Subgraphs in Sparse Directed Graphs
Connectivity related concepts are of fundamental interest in graph theory.
The area has received extensive attention over four decades, but many problems
remain unsolved, especially for directed graphs. A directed graph is
2-edge-connected (resp., 2-vertex-connected) if the removal of any edge (resp.,
vertex) leaves the graph strongly connected. In this paper we present improved
algorithms for computing the maximal 2-edge- and 2-vertex-connected subgraphs
of a given directed graph. These problems were first studied more than 35 years
ago, with time algorithms for graphs with m edges and n
vertices being known since the late 1980s. In contrast, the same problems for
undirected graphs are known to be solvable in linear time. Henzinger et al.
[ICALP 2015] recently introduced time algorithms for the directed
case, thus improving the running times for dense graphs. Our new algorithms run
in time , which further improves the running times for sparse
graphs.
The notion of 2-connectivity naturally generalizes to k-connectivity for
. For constant values of k, we extend one of our algorithms to compute the
maximal k-edge-connected in time , improving again for
sparse graphs the best known algorithm by Henzinger et al. [ICALP 2015] that
runs in time.Comment: Revised version of SODA 2017 paper including details for
k-edge-connected subgraph
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
2-Vertex Connectivity in Directed Graphs
We complement our study of 2-connectivity in directed graphs, by considering
the computation of the following 2-vertex-connectivity relations: We say that
two vertices v and w are 2-vertex-connected if there are two internally
vertex-disjoint paths from v to w and two internally vertex-disjoint paths from
w to v. We also say that v and w are vertex-resilient if the removal of any
vertex different from v and w leaves v and w in the same strongly connected
component. We show how to compute the above relations in linear time so that we
can report in constant time if two vertices are 2-vertex-connected or if they
are vertex-resilient. We also show how to compute in linear time a sparse
certificate for these relations, i.e., a subgraph of the input graph that has
O(n) edges and maintains the same 2-vertex-connectivity and vertex-resilience
relations as the input graph, where n is the number of vertices.Comment: arXiv admin note: substantial text overlap with arXiv:1407.304
Theoretically Efficient Parallel Graph Algorithms Can Be Fast and Scalable
There has been significant recent interest in parallel graph processing due
to the need to quickly analyze the large graphs available today. Many graph
codes have been designed for distributed memory or external memory. However,
today even the largest publicly-available real-world graph (the Hyperlink Web
graph with over 3.5 billion vertices and 128 billion edges) can fit in the
memory of a single commodity multicore server. Nevertheless, most experimental
work in the literature report results on much smaller graphs, and the ones for
the Hyperlink graph use distributed or external memory. Therefore, it is
natural to ask whether we can efficiently solve a broad class of graph problems
on this graph in memory.
This paper shows that theoretically-efficient parallel graph algorithms can
scale to the largest publicly-available graphs using a single machine with a
terabyte of RAM, processing them in minutes. We give implementations of
theoretically-efficient parallel algorithms for 20 important graph problems. We
also present the optimizations and techniques that we used in our
implementations, which were crucial in enabling us to process these large
graphs quickly. We show that the running times of our implementations
outperform existing state-of-the-art implementations on the largest real-world
graphs. For many of the problems that we consider, this is the first time they
have been solved on graphs at this scale. We have made the implementations
developed in this work publicly-available as the Graph-Based Benchmark Suite
(GBBS).Comment: This is the full version of the paper appearing in the ACM Symposium
on Parallelism in Algorithms and Architectures (SPAA), 201
Finding 2-Edge and 2-Vertex Strongly Connected Components in Quadratic Time
We present faster algorithms for computing the 2-edge and 2-vertex strongly
connected components of a directed graph, which are straightforward
generalizations of strongly connected components. While in undirected graphs
the 2-edge and 2-vertex connected components can be found in linear time, in
directed graphs only rather simple -time algorithms were known. We use
a hierarchical sparsification technique to obtain algorithms that run in time
. For 2-edge strongly connected components our algorithm gives the
first running time improvement in 20 years. Additionally we present an -time algorithm for 2-edge strongly connected components, and thus
improve over the running time also when . Our approach
extends to k-edge and k-vertex strongly connected components for any constant k
with a running time of for edges and for vertices
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
- …