可熔DEPQ

  • 可焊接的DEPQ(MDEPQ)定义为DEPQ(双端优先队列),除了上面列出的DEPQ操作之外,还包括操作meld(p,q)...将DEPQ p和q合并到单个DEPQ中。将双端优先级队列p和q融合的结果是一个包含p和q所有元素的双端优先级队列。融合操作具有破坏性,因为在融合之后,p和q不会保留为独立的DEPQ。

  • 为了在少于线性时间的时间内融合两个DEPQ,有必要将DEPQ表示为实现显式指针(而不是像堆的数组表示形式那样使用隐式指针),否则必须将线性数量的元素从其初始移至他们的最终位置。

  • 可以证明,当以这种方式表示最小-最大对堆时,元素(n的大小)DEPQ可以与O(log( n / k)* log k)时间。

  • 可以看出,分别融合两个大小为a和b的最小-最大堆的复杂度为Ω(a + b)。

  • 一种MDEPQ实现,该实现允许一个计算最小和最大元素,插入一个元素并在O(1)时间内融合两个优先级队列。删除最小或最大元素所需的时间为O(log n)。

  • 可以证明,左派树可以适用于获得MDEPQ的简单表示,其中,混合消耗对数时间,其余运算具有与实现上述任何DEPQ表示时相同的渐进复杂度。

  • 有趣的是,如果将FMPQ(快速可熔优先级队列)结构实现为基本MPQ结构,则会获得总对应MDEPQ结构,其中removeMax和removeMin消耗对数时间,其余操作消耗恒定时间。与双优先级队列自适应相比,这种自适应非常好,因为空间需求几乎是一半。另外,总的通信适应比双优先级队列适应快。