返回介绍

四、思考题

发布于 2025-02-17 12:55:39 字数 572 浏览 0 评论 0 收藏 0

20-1 删除的另一种实现

把 FIB-HEAP-DELETE 中的两个函数展开,再和 PISANO-DELETE 对比,并附上 x 不是 min[H]的假设,可以发现这两个函数执行的操作基本上是一样的,区别在于

(1)PISANO-DELETE 中去掉了 FIB-HEAP-DELETE 中多余的判断,不影响效率

(2)FIB-HEAP-DELETE 在删掉结点之后有合并调整的动作

a)add x's child list to the root list of H 的时间不是 O(1),因为每个 child 都有一个 pParent 指针,必须依次修改每个 child 的指针

20-2 其它斐波那契堆的操作

a)

(1)k < key[x]的情况,直接调用 FIB-HEAP-DECREASE-KEY

(2)k = key[x]的情况,不用处理

(3)k > key[x]的情况,交换它与它孩子的内容,但是指针保持不变,直到符合最小堆的情况,时间与堆的深度有关

b)

以我有限的智商,只能想到执行 min(r, n[H]) 次 EXTRACT

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文