《算法导论》笔记 第20章 20.2 可合并堆的操作
来源:互联网 发布:php sleep 停止执行 编辑:程序博客网 时间:2024/06/05 08:15
【笔记】
无序二项树U0包含一个结点,一棵无序的二项树Uk包含两棵无序二项树Uk-1,其中一棵的根节点成为另一棵的根结点的任意子结点。
二项树的性质堆无序二项树仍然成立
4' 对无序二项树Uk,根的度数为k,它大于任何其他结点的度数。根的子女按某种顺序分别为子树U0,U1,...,Uk-1的根。
创建一个新的斐波那契堆
插入一个结点
将x插入到H的根表中。结点x成为一棵单结点的最小堆有序树,同时也是堆中的一棵无序二项树。
连续执行k次INSERT操作,则k棵单结点的树被加到了根表中。
平摊代价O(1)
寻找最小结点
最小结点由指针min[T]指示,故可以在O(1)实际时间内找到最小结点。
合并两个斐波那契堆
将H1和H2的根表拼接成一个新的根表H。
抽取最小结点
先使最小结点的每个子女都成为一个根,并将最小结点从根表中去掉。
通过将度数相同的根连接起来,直至对应每个度数至多只有一个根来调整根表。
若执行EXTRACT-MIN前,斐波那契堆中所有的树都是无序二项树,则在此以后,它们也都是无序的二项树。
树发生变化的方式有两种。根z的每个孩子x成为一个根,都是无序的二项树。度数相同时,连接起来,若各有k个子女,则所得的树具有Uk+1的结构。
【练习】
20.2-1 给出图调用EXTRACT-MIN后得到的斐波那契堆。
20.2-2 证明:二项树的性质对无序二项树也成立。
20.2-3 证明:如果仅需支持可合并堆操作,则在包含n个结点的斐波那契堆中结点的最大度数D(n)至多为floor(lgn)。
20.2-4 插入和合并在最后的步骤中做合并调整。最坏运行时间是多少?
20.2-5 论证:如果对关键字的唯一操作是比较两个关键字,则并非所有的可合并堆操作都有O(1)的平摊运行时间。
- 《算法导论》笔记 第20章 20.2 可合并堆的操作
- 《算法导论》笔记 第20章 20.1 斐波那契堆的结构
- 《算法导论》笔记 第6章 6.4堆排序算法
- 算法学习导论学习笔记-第6章 堆排序
- 《算法导论》学习笔记 第6章 二叉堆
- 《算法导论》笔记 第6章 6.1堆
- 《算法导论》笔记 第6章 6.3建堆
- 算法导论学习笔记 第6章 堆排序
- 《算法导论》第6章 堆排序 个人笔记
- 《算法导论》笔记 第21章 *21.4 带路径压缩的按秩合并的分析
- 《算法导论》笔记 第6章 6.2保持堆的性质
- 算法导论 第20章 斐波那契堆
- 算法导论 第20章 斐波那契堆
- 【算法导论 第6章 堆排序】
- 算法导论 第6章 堆排序
- 《算法导论》 第6章堆排序
- 算法导论第6章 堆排序
- 算法导论第6章堆排序
- ubuntu开启SSH服务
- Ubuntu虚拟机搭建HDFS时常遇到的问题及相关解决办法
- haproxy配置详解
- JavaScript 操作JSON CRUD操作
- 各种最短路径算法的比较
- 《算法导论》笔记 第20章 20.2 可合并堆的操作
- Windows中Graphics API的发展
- git基础学习(三):版本回退 git reset --hard HEAD^(或者是commit id的前几位)和git reflog
- 新中国五代领导人漫画像亮相中国国际动漫节
- C++内存申请、内存释放
- mysql 函数
- 地理信息系统控件GIS控件TatukGIS Developer Kernel Toolkit功能详解及免费下载地址
- Java web Session 监听类。
- TRY NEW