🤖 AI Summary
This work proposes FeAVL, a fully persistent dynamic string data structure that efficiently supports split, concatenate, single-character update, equality testing, and longest common extension (LCE) queries. By integrating AVL trees with path-copying persistence for the first time, FeAVL achieves worst-case O(log n) time per update operation and O(log n + log²ℓ) time for LCE queries, creating only O(log n) new nodes per update. The design is further enhanced with an AVL-grammar-based compression scheme, yielding a total space complexity of O(g₀ + I + U log nₘₐₓ) after U updates, where g₀ denotes the initial grammar size, I the number of insertions, and nₘₐₓ the maximum string length. This approach avoids pitfalls of amortized analysis while maintaining strong theoretical guarantees and practical compression performance.
📝 Abstract
We study fully persistent dynamic strings with equality and longest common extension (LCE) queries. Straightforward full persistence is problematic for the splay-based FeST structure, since the same unbalanced past version can be reused indefinitely and the usual amortized analysis no longer applies. We give a fully persistent dynamic LCE structure, called FeAVL, based on path copying over AVL trees. For an operation involving string(s) of total length $n$, it supports split, concatenate, and single-character updates in worst-case $O(\log n)$ time, equality in worst-case $O(\log n)$ time w.h.p., and LCE in worst-case $O(\log n+\log^2\ell)$ time w.h.p., where $\ell$ is the answer; each update creates only $O(\log n)$ new permanent nodes. We also give a grammar-compressed instantiation via AVL grammars: starting from an initial grammar of size $g_0$, after $U$ updates, the total number of permanent grammar nodes is $O(g_0+I+U\log n_{\max})$, where $I$ is the number of inserted fresh characters and $n_{\max}$ is the maximum string length appearing during the update sequence.