Size-Constrained Weighted Ancestors with Applications

Document Type

Conference Proceeding

Publication Date



The weighted ancestor problem on a rooted node-weighted tree T is a generalization of the classic predecessor problem: construct a data structure for a set of integers that supports fast predecessor queries. Both problems are known to require Ω(log log n) time for queries provided O(n poly log n) space is available, where n is the input size. The weighted ancestor problem has attracted a lot of attention by the combinatorial pattern matching community due to its direct application to suffix trees. In this formulation of the problem, the nodes are weighted by string depth. This research has culminated in a data structure for weighted ancestors in suffix trees with O(1) query time and an O(n)-time construction algorithm [Belazzougui et al., CPM 2021]. In this paper, we consider a different version of the weighted ancestor problem, where the nodes are weighted by any function weight that maps each node of T to a positive integer, such that weight(u) ≤ size(u) for any node u and weight(u1) ≤ weight(u2) if node u1 is a descendant of node u2, where size(u) is the number of nodes in the subtree rooted at u. In the size-constrained weighted ancestor (SWA) problem, for any node u of T and any integer k, we are asked to return the lowest ancestor w of u with weight at least k. We show that for any rooted tree with n nodes, we can locate node w in O(1) time after O(n)-time preprocessing. In particular, this implies a data structure for the SWA problem in suffix trees with O(1) query time and O(n)-time preprocessing, when the nodes are weighted by weight. We also show several string-processing applications of this result.

Publication Title

Leibniz International Proceedings in Informatics, LIPIcs