599 research outputs found
Faster Deterministic Fully-Dynamic Graph Connectivity
We give new deterministic bounds for fully-dynamic graph connectivity. Our
data structure supports updates (edge insertions/deletions) in
amortized time and connectivity queries in worst-case time, where is the number of vertices of the
graph. This improves the deterministic data structures of Holm, de Lichtenberg,
and Thorup (STOC 1998, J.ACM 2001) and Thorup (STOC 2000) which both have
amortized update time and worst-case query
time. Our model of computation is the same as that of Thorup, i.e., a pointer
machine with standard instructions.Comment: To appear at SODA 2013. 19 pages, 1 figur
Wavelet Trees Meet Suffix Trees
We present an improved wavelet tree construction algorithm and discuss its
applications to a number of rank/select problems for integer keys and strings.
Given a string of length n over an alphabet of size , our
method builds the wavelet tree in time,
improving upon the state-of-the-art algorithm by a factor of .
As a consequence, given an array of n integers we can construct in time a data structure consisting of machine words and
capable of answering rank/select queries for the subranges of the array in
time. This is a -factor improvement in
query time compared to Chan and P\u{a}tra\c{s}cu and a -factor
improvement in construction time compared to Brodal et al.
Next, we switch to stringological context and propose a novel notion of
wavelet suffix trees. For a string w of length n, this data structure occupies
words, takes time to construct, and simultaneously
captures the combinatorial structure of substrings of w while enabling
efficient top-down traversal and binary search. In particular, with a wavelet
suffix tree we are able to answer in time the following two
natural analogues of rank/select queries for suffixes of substrings: for
substrings x and y of w count the number of suffixes of x that are
lexicographically smaller than y, and for a substring x of w and an integer k,
find the k-th lexicographically smallest suffix of x.
We further show that wavelet suffix trees allow to compute a
run-length-encoded Burrows-Wheeler transform of a substring x of w in time, where s denotes the length of the resulting run-length encoding.
This answers a question by Cormode and Muthukrishnan, who considered an
analogous problem for Lempel-Ziv compression.Comment: 33 pages, 5 figures; preliminary version published at SODA 201
Replacing the Irreplaceable: Fast Algorithms for Team Member Recommendation
In this paper, we study the problem of Team Member Replacement: given a team
of people embedded in a social network working on the same task, find a good
candidate who can fit in the team after one team member becomes unavailable. We
conjecture that a good team member replacement should have good skill matching
as well as good structure matching. We formulate this problem using the concept
of graph kernel. To tackle the computational challenges, we propose a family of
fast algorithms by (a) designing effective pruning strategies, and (b)
exploring the smoothness between the existing and the new team structures. We
conduct extensive experimental evaluations on real world datasets to
demonstrate the effectiveness and efficiency. Our algorithms (a) perform
significantly better than the alternative choices in terms of both precision
and recall; and (b) scale sub-linearly.Comment: Initially submitted to KDD 201
Dynamic Spanning Trees for Connectivity Queries on Fully-dynamic Undirected Graphs (Extended version)
Answering connectivity queries is fundamental to fully dynamic graphs where
edges and vertices are inserted and deleted frequently. Existing work proposes
data structures and algorithms with worst-case guarantees. We propose a new
data structure, the dynamic tree (D-tree), together with algorithms to
construct and maintain it. The D-tree is the first data structure that scales
to fully dynamic graphs with millions of vertices and edges and, on average,
answers connectivity queries much faster than data structures with worst case
guarantees
A comparison of tree- and line-oriented observational slicing
Observation-based slicing and its generalization observational slicing are recently-introduced, language-independent dynamic slicing techniques. They both construct slices based on the dependencies observed during program execution, rather than static or dynamic dependence analysis. The original implementation of the observation-based slicing algorithm used lines of source code as its program representation. A recent variation, developed to slice modelling languages (such as Simulink), used an XML representation of an executable model. We ported the XML slicer to source code by constructing a tree representation of traditional source code through the use of srcML. This work compares the tree- and line-based slicers using four experiments involving twenty different programs, ranging from classic benchmarks to million-line production systems. The resulting slices are essentially the same size for the majority of the programs and are often identical. However, structural constraints imposed by the tree representation sometimes force the slicer to retain enclosing control structures. It can also “bog down” trying to delete single-token subtrees. This occasionally makes the tree-based slices larger and the tree-based slicer slower than a parallelised version of the line-based slicer. In addition, a Java versus C comparison finds that the two languages lead to similar slices, but Java code takes noticeably longer to slice. The initial experiments suggest two improvements to the tree-based slicer: the addition of a size threshold, for ignoring small subtrees, and subtree replacement. The former enables the slicer to run 3.4 times faster while producing slices that are only about 9% larger. At the same time the subtree replacement reduces size by about 8–12% and allows the tree-based slicer to produce more natural slices
- …