We show the $O(\log n)$ time extract minimum function of efficient priority queues can be generalized to the extraction of the $k$ smallest elements in $O(k \log(n/k))$ time, where we define $\log(x)$ as $\max(\log_2(x), 1)$. We first show heap-ordered tree selection (Kaplan et al., SOSA '19) can be applied on the heap-ordered trees of the classic Fibonacci heap to support the extraction in $O(k \log(n/k))$ amortized time. We then show selection is possible in a priority queue with optimal worst-case guarantees by applying heap-ordered tree selection on Brodal queues (SODA '96), supporting the operation in $O(k \log(n/k))$ worst-case time. Via a reduction from the multiple selection problem, $\Omega(k \log(n/k))$ time is necessary if insertion is supported in $o(\log n)$ time. We then apply the result to lazy search trees (Sandlund & Wild, FOCS '20), creating a new interval data structure based on selectable heaps. This gives optimal $O(B+n)$ time lazy search tree performance, lowering insertion complexity into a gap $\Delta_i$ to $O(\log(n/|\Delta_i|))$ time. An $O(1)$ time merge operation is also made possible when used as a priority queue, among other situations. If Brodal queues are used, runtimes of the lazy search tree can be made worst-case in the general case of two-sided gaps. The presented data structure makes fundamental use of soft heaps (Chazelle, J. ACM '00), biased search trees, and efficient priority queues, approaching the theoretically-best data structure for ordered data.
翻译:我们显示 $O( log_ 2x) $。 我们首先在经典的 Fibonacci 树状树状选择中显示堆积排序的树状选择( Kaplan et al., SOSA'19) 。 在经典的 Fibonacci 树状树状树状选择中, 支持 $O( k\log( n/ k) 美元) 最小的最小元素的提取, 在 $O( k\ log( n/ k) ) 比例化的时间里, 我们可以在最小的队列中显示最小的 $k( k) 最小的元素。 我们然后在最坏的队列中显示 $( log( n/ k) 美元) 最小的 最小的 最小的值 。 我们随后在最坏的队列中, 使用 树状的树状选择, 支持 $( k) 普通的树状( n/ k) 最坏的树状的树状结构里, 也可以使用其他选择的 时间里程中的数据 。