具有最优秩、选择和前序搜索的动态随机集
Dynamic Integer Sets with Optimal Rank, Select, and Predecessor Search
摘要:
我们提出了一种数据结构,它表示在一个w位字RAM上的一个w位整数的动态集合S。在|S| =n且w > log n且空间为O(n)的情况下,我们支持以下标准操作,时间复杂度为O(log n / log w):- insert(x)sets S = S + {x}。- delete(x)设置S = S - {x}。- predecessor(x)返回S中的max{y| y< x}。- successor(x)返回S中的min{y| y >= x}。- rank(x)返回S中的#{y| y< x}。- select(i)返回S中的y,rank(y)=i,如果有的话。我们的O(log n/log w)界对于动态排名和选择是最优的,与Fredman和Saks [STOC'89]的下界相匹配。当字长很大时,我们的时间界限对于动态前导也是最优的,只要log n/log w=O(log w/loglog w),就匹配Beame和Fich [STOC'99]的静态下限。从技术上讲,我们的数据结构最有趣的方面是,它支持在常数时间内对大小为n=w^{O(1)}的集合进行所有上述操作。这解决了Ajtai,Komlos和Fredman [FOCS'83]的一个主要开放问题。Ajtai等人在Yao的具有w位单元/字的抽象单元探测模型中提出了这样的数据结构,但指出所使用的功能无法实现。作为该问题的部分解决方案,Fredman和Willard [STOC'90]引入了一个融合节点,该节点可以在恒定时间内处理查询,但在更新上使用多项式时间。我们称我们的小集合数据结构为动态融合节点,因为它在恒定时间内进行查询和更新。
英文摘要:
We present a data structure representing a dynamic set S of w-bit integers on a w-bit word RAM. With |S|=n and w > log n and space O(n), we support the following standard operations in O(log n / log w) time: - insert(x) sets S = S + {x}. - delete(x) sets S = S - {x}. - predecessor(x) returns max{y in S | y< x}. - successor(x) returns min{y in S | y >= x}. - rank(x) returns #{y in S | y< x}. - select(i) returns y in S with rank(y)=i, if any. Our O(log n/log w) bound is optimal for dynamic rank and select, matching a lower bound of Fredman and Saks [STOC'89]. When the word length is large, our time bound is also optimal for dynamic predecessor, matching a static lower bound of Beame and Fich [STOC'99] whenever log n/log w=O(log w/loglog w). Technically, the most interesting aspect of our data structure is that it supports all the above operations in constant time for sets of size n=w^{O(1)}. This resolves a main open problem of Ajtai, Komlos, and Fredman [FOCS'83]. Ajtai et al. presented such a data structure in Yao's abstract cell-probe model with w-bit cells/words, but pointed out that the functions used could not be implemented. As a partial solution to the problem, Fredman and Willard [STOC'90] introduced a fusion node that could handle queries in constant time, but used polynomial time on the updates. We call our small set data structure a dynamic fusion node as it does both queries and updates in constant time.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。