『算法设计_伪代码』斐波那契堆

一、堆结构

由一组最小堆有序树组成,每个节点有key值、四个指针(parent,child,left,right)、两个属性(是否被标记,degree)组成,堆对象有两个属性:H.min(有序树roots中最小的那个),H.n(总节点数)

任何节点的degree不大于lgn向下取整

二、势能函数

由树的个数、被标记节点数确定

三、堆操作

1、初始化

由于势能变化为0,所以平摊代价等于实际代价

2、插入操作

PPT上未显式指定左右指针值,应该包含在list操作中

这个插入操作仅仅插入新的树,代价依然是线性的

3、寻找最小节点

4、合并不同堆

合并root链表,修改堆的min和n值

5、抽取最小值

 示意:

 

 

6、节点key值减小后调整

将被减小节点去mask后添加到root,根据其父节点是否mask决定是否递归向上操作

 

性能分析:

7、删除节点

修改为负无穷调整,抽取最小值

 

posted @ 2018-07-05 11:12  叠加态的猫  阅读(1028)  评论(0编辑  收藏  举报