d-heap删除算法

时间:2011-09-19 10:36:43

标签: algorithm

  

二进制堆非常简单,几乎总是在使用时使用   需要优先级队列。一个简单的概括是一个d堆,它   就像二进制堆一样,除了所有节点都有d个子节点   (因此,二进制堆是2堆)。

     

请注意,d-heap比二进制堆浅得多,   将插入物的运行时间改善为O(log(base(d)n))。然而,   delete_min操作比较贵,因为即使是   树较浅,必须找到d儿童的最小值   使用标准算法进行d-1比较。这提高了   此操作的时间为O(d logdn)。如果d是常数,两者都是   运行时间当然是O(log n)。

我的问题是d dilderen我们应该进行比较,作者如何使用标准算法得出d-1比较。

谢谢!

1 个答案:

答案 0 :(得分:3)

你有一个比孩子少的比较。

E.g。对于两个孩子a1a2,您只需比较一次a1<=>a2即可找到较小的一个。

对于三个孩子a1a2a3,您比较一次以找到较小的a1a2,并再次比较较小的a3d一到d-1

通过归纳,您会看到每增加一个孩子,您需要进行额外的比较,将之前列表的最小值与新添加的孩子进行比较。

因此,一般情况下,对于{{1}}个孩子,您需要{{1}}次比较才能找到最低限度。