2,055 research outputs found
On Succinct Representations of Binary Trees
We observe that a standard transformation between \emph{ordinal} trees
(arbitrary rooted trees with ordered children) and binary trees leads to
interesting succinct binary tree representations. There are four symmetric
versions of these transformations. Via these transformations we get four
succinct representations of -node binary trees that use bits and support (among other operations) navigation, inorder
numbering, one of pre- or post-order numbering, subtree size and lowest common
ancestor (LCA) queries. The ability to support inorder numbering is crucial for
the well-known range-minimum query (RMQ) problem on an array of ordered
values. While this functionality, and more, is also supported in time
using bits by Davoodi et al.'s (\emph{Phil. Trans. Royal Soc. A}
\textbf{372} (2014)) extension of a representation by Farzan and Munro
(\emph{Algorithmica} \textbf{6} (2014)), their \emph{redundancy}, or the
term, is much larger, and their approach may not be suitable for practical
implementations.
One of these transformations is related to the Zaks' sequence (S.~Zaks,
\emph{Theor. Comput. Sci.} \textbf{10} (1980)) for encoding binary trees, and
we thus provide the first succinct binary tree representation based on Zaks'
sequence. Another of these transformations is equivalent to Fischer and Heun's
(\emph{SIAM J. Comput.} \textbf{40} (2011)) \minheap\ structure for this
problem. Yet another variant allows an encoding of the Cartesian tree of to
be constructed from using only bits of working space.Comment: Journal version of part of COCOON 2012 pape
Simple and Efficient Fully-Functional Succinct Trees
The fully-functional succinct tree representation of Navarro and Sadakane
(ACM Transactions on Algorithms, 2014) supports a large number of operations in
constant time using bits. However, the full idea is hard to
implement. Only a simplified version with operation time has been
implemented and shown to be practical and competitive. We describe a new
variant of the original idea that is much simpler to implement and has
worst-case time for the operations. An implementation based on
this version is experimentally shown to be superior to existing
implementations
LRM-Trees: Compressed Indices, Adaptive Sorting, and Compressed Permutations
LRM-Trees are an elegant way to partition a sequence of values into sorted
consecutive blocks, and to express the relative position of the first element
of each block within a previous block. They were used to encode ordinal trees
and to index integer arrays in order to support range minimum queries on them.
We describe how they yield many other convenient results in a variety of areas,
from data structures to algorithms: some compressed succinct indices for range
minimum queries; a new adaptive sorting algorithm; and a compressed succinct
data structure for permutations supporting direct and indirect application in
time all the shortest as the permutation is compressible.Comment: 13 pages, 1 figur
Compact Binary Relation Representations with Rich Functionality
Binary relations are an important abstraction arising in many data
representation problems. The data structures proposed so far to represent them
support just a few basic operations required to fit one particular application.
We identify many of those operations arising in applications and generalize
them into a wide set of desirable queries for a binary relation representation.
We also identify reductions among those operations. We then introduce several
novel binary relation representations, some simple and some quite
sophisticated, that not only are space-efficient but also efficiently support a
large subset of the desired queries.Comment: 32 page
Compressed Representations of Permutations, and Applications
We explore various techniques to compress a permutation over n
integers, taking advantage of ordered subsequences in , while supporting
its application (i) and the application of its inverse in
small time. Our compression schemes yield several interesting byproducts, in
many cases matching, improving or extending the best existing results on
applications such as the encoding of a permutation in order to support iterated
applications of it, of integer functions, and of inverted lists and
suffix arrays
- …