Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm d堆删除算法_Algorithm - Fatal编程技术网

Algorithm d堆删除算法

Algorithm d堆删除算法,algorithm,Algorithm,二进制堆非常简单,几乎总是在需要时使用它们 需要优先级队列。一个简单的泛化是d堆,它 与二进制堆完全相同,只是所有节点都有d个子节点 (因此,二进制堆是2-堆) 请注意,d堆比二进制堆浅得多, 将insert的运行时间提高到O(log(base(d)n))。然而, delete_min操作成本更高,因为即使 树较浅,必须找到最小的d个孩子,这 使用标准算法进行d-1比较。这引起了争议 此操作到O(d logdn)的时间。如果d是常数,则 运行时间当然是O(logn) 我的问题是d-Childre

二进制堆非常简单,几乎总是在需要时使用它们 需要优先级队列。一个简单的泛化是d堆,它 与二进制堆完全相同,只是所有节点都有d个子节点 (因此,二进制堆是2-堆)

请注意,d堆比二进制堆浅得多, 将insert的运行时间提高到O(log(base(d)n))。然而, delete_min操作成本更高,因为即使 树较浅,必须找到最小的d个孩子,这 使用标准算法进行d-1比较。这引起了争议 此操作到O(d logdn)的时间。如果d是常数,则 运行时间当然是O(logn)

我的问题是d-Children我们应该有d个比较,作者如何使用标准算法得出d-1比较的结论


谢谢

你比孩子少做一次比较

例如,对于两个孩子
a1
a2
,您只需比较一次
a1a2
,即可找到较小的孩子

对于三个孩子
a1
a2
a3
比较一次,找出
a1
a2
中较小的一个,第二次比较较小的一个和
a3

通过归纳,您可以看到,对于每个额外的子项,您需要进行额外的比较,将上一个列表中的最小值与新添加的子项进行比较

因此,一般来说,对于
d
儿童,您需要进行
d-1
比较以找到最小值