zoukankan      html  css  js  c++  java
  • 『算法设计_伪代码』斐波那契堆

    一、堆结构

    由一组最小堆有序树组成,每个节点有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、删除节点

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

  • 相关阅读:
    udp tcp
    easy_install jinja2 mac linux
    linux 常用命令;
    Mac android 开发 sdk配置和手机连接
    ubuntu server 分区
    常见操作
    环境搭建相关
    ssh登录虚拟机上的linux
    算法学习
    转载一个 测试java类的玩意
  • 原文地址:https://www.cnblogs.com/hellcat/p/9267300.html
Copyright © 2011-2022 走看看