比较驱动数据结构中无界长键的管理及其在联机索引中的应用
Managing Unbounded-Length Keys in Comparison-Driven Data Structures with Applications to On-Line Indexing
摘要:
本文提出了一种通用的技术,用于优化转换任何动态的数据结构,原子和不可分割的关键字的常数时间比较,到一个数据结构,处理无限长的关键字的比较成本不是一个常数。这些键的示例包括字符串、多维点、多精度数字、多键数据(例如~记录)、XML路径、URL地址等。该技术比以前的工作更通用,因为不需要特别利用的底层结构。唯一的要求是,插入的键必须标识它的前导键或后继键。使用所提出的技术,在线后缀树可以在最坏情况下的时间$O(\log n)$每输入符号(相对于摊销的$O(\log n)$时间每符号,通过先前已知的算法实现)。据我们所知,我们的算法是第一个实现$O(\log n)$最坏情况下的时间每输入符号。在结果后缀树中搜索长度为$m$的模式需要花费$O(\min(m\log |Σ|, m + \log n) + tocc)$时间,其中$tocc$是模式出现的次数。本文还描述了更多的应用,并展示了如何获得替代方法来处理后缀排序,动态最低共同祖先和顺序维护。
英文摘要:
This paper presents a general technique for optimally transforming any dynamic data structure that operates on atomic and indivisible keys by constant-time comparisons, into a data structure that handles unbounded-length keys whose comparison cost is not a constant. Examples of these keys are strings, multi-dimensional points, multiple-precision numbers, multi-key data (e.g.~records), XML paths, URL addresses, etc. The technique is more general than what has been done in previous work as no particular exploitation of the underlying structure of is required. The only requirement is that the insertion of a key must identify its predecessor or its successor. Using the proposed technique, online suffix tree can be constructed in worst case time $O(\log n)$ per input symbol (as opposed to amortized $O(\log n)$ time per symbol, achieved by previously known algorithms). To our knowledge, our algorithm is the first that achieves $O(\log n)$ worst case time per input symbol. Searching for a pattern of length $m$ in the resulting suffix tree takes $O(\min(m\log |Σ|, m + \log n) + tocc)$ time, where $tocc$ is the number of occurrences of the pattern. The paper also describes more applications and show how to obtain alternative methods for dealing with suffix sorting, dynamic lowest common ancestors and order maintenance.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。