论文--左偏树的特点及其应用

论文--左偏树的特点及其应用

ID:39986880

大小:324.00 KB

页数:22页

时间:2019-07-16

论文--左偏树的特点及其应用_第1页
论文--左偏树的特点及其应用_第2页
论文--左偏树的特点及其应用_第3页
论文--左偏树的特点及其应用_第4页
论文--左偏树的特点及其应用_第5页
资源描述:

《论文--左偏树的特点及其应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、左偏树的特点及其应用【摘要】本文较详细地介绍了左偏树的特点以及它的各种操作。第一部分提出可并堆的概念,指出二叉堆的不足,并引出左偏树。第二部分主要介绍了左偏树的定义和性质。第三部分详细地介绍了左偏树的各种操作,并给出时间复杂度分析。第四部分通过一道例题,说明左偏树在当今信息学竞赛中的应用。第五部分对各种可并堆作了一番比较。最后总结出左偏树的特点以及应用前景。【关键字】左偏树可并堆优先队列【目录】一、引言2二、左偏树的定义和性质22.1优先队列,可并堆22.1.1优先队列的定义22.1.2可并堆的定义22.2左偏树的定义32.3左偏

2、树的性质4三、左偏树的操作53.1左偏树的合并53.2插入新节点73.3删除最小节点83.4左偏树的构建83.5删除任意已知节点93.6小结12四、左偏树的应用134.1例——数字序列(Baltic2004)13五、左偏树与各种可并堆的比较155.1左偏树的变种——斜堆155.2左偏树与二叉堆的比较165.3左偏树与其他可并堆的比较16六、总结18第22页共22页【正文】一、引言优先队列在信息学竞赛中十分常见,在统计问题、最值问题、模拟问题和贪心问题等等类型的题目中,优先队列都有着广泛的应用。二叉堆是一种常用的优先队列,它编程简单

3、,效率高,但如果问题需要对两个优先队列进行合并,二叉堆的效率就无法令人满意了。本文介绍的左偏树,可以很好地解决这类问题。二、左偏树的定义和性质在介绍左偏树之前,我们先来明确一下优先队列和可并堆的概念。2.1优先队列,可并堆2.1.1优先队列的定义优先队列(PriorityQueue)是一种抽象数据类型(ADT),它是一种容器,里面有一些元素,这些元素也称为队列中的节点(node)。优先队列的节点至少要包含一种性质:有序性,也就是说任意两个节点可以比较大小。为了具体起见我们假设这些节点中都包含一个键值(key),节点的大小通过比较它

4、们的键值而定。优先队列有三个基本的操作:插入节点(Insert),取得最小节点(Minimum)和删除最小节点(Delete-Min)。2.1.2可并堆的定义可并堆(MergeableHeap)也是一种抽象数据类型,它除了支持优先队列的三个基本操作(Insert,Minimum,Delete-Min),还支持一个额外的操作——合并操作:H←Merge(H1,H2)Merge()构造并返回一个包含H1和H2所有元素的新堆H。前面已经说过,如果我们不需要合并操作,则二叉堆是理想的选择。可惜合并二叉堆的时间复杂度为O(n),用它来实现可

5、并堆,则合并操作必然成为算法的瓶颈。左偏树(LeftistTree)、二项堆(BinomialHeap)和Fibonacci堆(FibonacciHeap)都是十分优秀的可并堆。本文讨论的是左偏树,在后面我们将看到各种可并堆的比较。第22页共22页2.2左偏树的定义左偏树(LeftistTree)是一种可并堆的实现。左偏树是一棵二叉树,它的节点除了和二叉树的节点一样具有左右子树指针(left,right)外,还有两个属性:键值和距离(dist)。键值上面已经说过,是用于比较节点的大小。距离则是如下定义的:节点i称为外节点(exte

6、rnalnode),当且仅当节点i的左子树或右子树为空(left(i)=NULL或right(i)=NULL);节点i的距离(dist(i))是节点i到它的后代中,最近的外节点所经过的边数。特别的,如果节点i本身是外节点,则它的距离为0;而空节点的距离规定为-1(dist(NULL)=-1)。在本文中,有时也提到一棵左偏树的距离,这指的是该树根节点的距离。左偏树满足下面两条基本性质:[性质1]节点的键值小于或等于它的左右子节点的键值。即key(i)≤key(parent(i))这条性质又叫堆性质。符合该性质的树是堆有序的(Heap

7、-Ordered)。有了性质1,我们可以知道左偏树的根节点是整棵树的最小节点,于是我们可以在O(1)的时间内完成取最小节点操作。[性质2]节点的左子节点的距离不小于右子节点的距离。即dist(left(i))≥dist(right(i))这条性质称为左偏性质。性质2是为了使我们可以以更小的代价在优先队列的其它两个基本操作(插入节点、删除最小节点)进行后维持堆性质。在后面我们就会看到它的作用。这两条性质是对每一个节点而言的,因此可以简单地从中得出,左偏树的左右子树都是左偏树。由这两条性质,我们可以得出左偏树的定义:左偏树是具有左偏性

8、质的堆有序二叉树。下图是一棵左偏树:01218311211802401803703306114021017062230260101keydistNode:keydistLR第22页共22页2.3左偏树的性质在前面一节中,本文已经介绍了左偏树的两个基

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。