可熔DEPQ
可焊接的DEPQ(MDEPQ)定义为DEPQ(双端优先队列),除了上面列出的DEPQ操作之外,还包括操作meld(p,q)...将DEPQp和q合并到单个DEPQ中。将双端优先级队列p和q融合的结果是一个包含p和q所有元素的双端优先级队列。融合操作具有破坏性,因为在融合之后,p和q不会保留为独立的DEPQ。
为了在少于线性时间的时间内融合两个DEPQ,有必要将DEPQ表示为实现显式指针(而不是像堆的数组表示形式那样使用隐式指针),否则必须将线性数量的元素从其初始移至他们的最终位置。
可以证明,当以这种方式表示最小-最大对堆时,元素(n的大小)DEPQ可以与O(log(n/k)*logk)时间。
可以看出,分别融合两个大小为a和b的最小-最大堆的复杂度为Ω(a+b)。
一种MDEPQ实现,该实现允许一个计算最小和最大元素,插入一个元素并在O(1)时间内融合两个优先级队列。删除最小或最大元素所需的时间为O(logn)。
可以证明,左派树可以适用于获得MDEPQ的简单表示,其中,混合消耗对数时间,其余运算具有与实现上述任何DEPQ表示时相同的渐进复杂度。
有趣的是,如果将FMPQ(快速可熔优先级队列)结构实现为基本MPQ结构,则会获得总对应MDEPQ结构,其中removeMax和removeMin消耗对数时间,其余操作消耗恒定时间。与双优先级队列自适应相比,这种自适应非常好,因为空间需求几乎是一半。另外,总的通信适应比双优先级队列适应快。