Space-Efficient Data Structures for Lattices
A lattice is a partially-ordered set in which every pair of elements has a unique meet (greatest lower bound) and join (least upper bound). We present new data structures for lattices that are simple, efficient, and nearly optimal in terms of space complexity. Our first data structure can answer partial order queries in constant time and find the meet or join of two elements in O(n^3/4) time, where n is the number of elements in the lattice. It occupies O(n^3/2 n) bits of space, which is only a Θ( n) factor from the Θ(n^3/2)-bit lower bound for storing lattices. The preprocessing time is O(n^2). This structure admits a simple space-time tradeoff so that, for any c ∈ [1/2, 1], the data structure supports meet and join queries in O(n^1-c/2) time, occupies O(n^1+c n) bits of space, and can be constructed in O(n^2 + n^1+3c/2) time. Our second data structure uses O(n^3/2 n) bits of space and supports meet and join in O(d n/ d) time, where d is the maximum degree of any element in the transitive reduction graph of the lattice. This structure is much faster for lattices with low-degree elements. This paper also identifies an error in a long-standing solution to the problem of representing lattices. We discuss the issue with this previous work.
READ FULL TEXT