您好、欢迎来到现金彩票网!
当前位置:PC蛋蛋 > 最优归并树 >

775 最佳归并树

发布时间:2019-07-04 02:49 来源:未知 编辑:admin

  文件经过置换-选择排序之后,得到的是长度不等的初始归并段。下面讨论如何组织初始归并段的归并顺序,使I/O访问次数最少。

  m-路归并排序可用一棵m叉树描述,因为每一次作m路归并都需要m个归并段参加,因为,归并段树是一棵只有度为0和度为m的结点的严格m叉树。

  设由置换-选择排序得到9个初始归并段,其长度(记录数)依次为:9,30,12,18,3,17,2,6,24。

  现作3-路归并,各叶结点表示参加归并的一个初始归并段,叶结点上的权值表示初始归并过程中的记录数,根结点表示最终生成的归并段,叶结点到根结点的路径长度表示归并过程中的归并趟数,各非叶结点代表归并成的新的归并段,则归并树的带权路径长度WPL即为归并过程中的总记录数,因而在归并过程中,总的I/O次数为2*WPL=484。

  归并方案不同,所得归并树亦不同,树的带权路径长度(外存I/O次数亦不同)。为了优化归并树的WPL,可以将Huffman树的思想推广到M叉树的情形。在归并树中,让记录数少的初始归并段最先归并,记录数多的初始归并段最晚归并,就可以建立总的I/O次数达到最少的最佳归并树。对上述9个初始归并段可构造成最佳归并树,按此树进行归并,仅需对外村进行446次读写,这棵树便称为最佳归并树。

  Huffman树是一棵严格3叉树。若只有8个初始归并段,设上例中少了一个长度为30的归并段。如果在设计归并方案时,缺额的归并段留着最后,即除了最后一次作2-路归并外,其他各次归并仍都是3-路归并,此归并方案的外存读写次数为386。显然不是最佳方案。

  正确的做法是,若初始归并段不足构成一棵严格m叉树时,需添加长度为0的“虚段”,按照Huffman树的原则,权为0的叶子应离根最远。

  如果(N0-1)%(m-1)=0(%为取余运算),则说明这N0个叶结点(初始归并段)正好可以构造m叉归并树。此时,内结点有Nm个。

  如果(N0-1)%(m-1)=u不等于0,则说明对于这N0个叶结点,其中有u个多余,不能包含在m叉归并树中。为构造包含所有N0个初始归并段的m叉归并树,应在原有Nm个内结点的基础上再增加一个内结点。它在归并树中代替了一个叶结点位置,被代替的叶结点家伙是哪个刚才多出的u个叶结点,再加上m-u-1个空归并段,就可以建立归并树。

  因本人刚开始写博客,学识经验有限,如有不正之处望读者指正,不胜感激;也望借此平台留下学习笔记以温故而知新。最佳归并树,转载地址:博文来自:曦瓜

  多路平衡归并+置换选择+最佳归并树  最近忙着考研,在学习复习数据结构(严慧敏版)外部排序那一章的时候简直开始怀疑人生了。以前我是怎么过来的?!败者树能吃吗??置换选择不就是操作系统页面换进换出的概念...博文来自:toTheAir的博客

  外部排序外部排序和内部排序还是有非常的的不同的,我们的外部排序主要针对的优化目标也是不同的,这里我先从外部排序的物理基础开始进行讲解1.外存:外部存储设备,相对于我们的内部存储设备而言具有一些特点1....博文来自:72 73 76 89 82 84 89 81

  归并树与划分树  2010-08-1623:24:40  分类: ACM字号 订阅据说最近挺热门的,想起寒假学过归并树,结果现在什么都不记得了,模拟了下归并排序终于想起来了归并树以152637为例...博文来自:pi9nc的专栏

  问题描述给定n个有序文件,每个文件的记录数分别为w1~wn,请给出一种两两合并的方案,使得总合并次数最少。注意:1.外排序算法是将多个有序文件合并成一个有序文件的过程。2.在一次合并的过程中,两个文件...博文来自:大闲人柴毛毛

  1.问题描述:把N个已分类的文件通过成对地重复归并已分类的文件归并在一个文件中。例如,假定X1,X2,X3,X4是要归并的文件,则可以首先把X1,X2归并成Y1,然后Y1和X3归并成Y2,最后Y2和X...博文

  之前一直分不清桶排序和基数排序,现在拿出来这两比较一下1、算法思路:桶排序桶排序(BucketSort)假设输入数据服从均匀分布,然后将输入数据均匀地分配到有限数量的桶中,然后对每个桶再分别排序,对每...博文来自:山鬼谣弋痕夕的博客

  线性表是数据结构中比较重要的一种逻辑结构,插入删除操作是线性表的基本操作,当进行这些操作时,不仅需要考虑插入、删除的位置是否合法性,仍然需要考虑‘满’与‘空’这两种状态,但是,由于栈和队列都是受限制的...博文来自:zhupengqq的博客

  第一种方法是设置一个标志量flag,当front==rear且flag=0时为空,当front==rear且flag=1时队列为满;第二种方法是我们修改条件,保留一个元素空间,也就是说,数组中还有一个...博文来自:return9的博客

  线段树一维的刷差不多了,求区间第K数一直卡着。划分树和归并树都可以求,比较了一下时间效率,划分树比归并树快了很多,而且POJ有个求区间第K数的题用归并树居然过不去。鉴于时间短,我决定把划分树给弄明白=...博文来自:小媛在努力~

  归并趟数S=[logmR](向下取整)。从而增加归并路数m可以减少归并趟数S,进而减少访问外存的次数(I/O次数)。然而,当增加归并路数m时,内部归并时间将增加。做内部归并时,在m个元素中选择关键字最...博文来自:姜兴琪的博客

  在求解区间第k个数的问题,除了划分树以外我们还可以使用另一种高效的方法------归并树。所谓归并树,就是利用线段树的建树过程,将归并排序的过程保存。在发生地方的发生的...博文来自:Enstein_Jun

  7.7.3讨论了如何使用m路归并来减少磁盘访问次数。从第7.7.2的讨论可知,减少初始归并段个数r也可以减少归并趟数S。若总的记录个数为n,每个归并段的长度为L,则归并段的个数m=[n/L]。如果采用...博文来自:姜兴琪的博客

  先放一张图片对45287613分别建划分树和归并树划分树如下图红色的点是此节点中被划分到左子树的点。   我们一般用一个结构体数组来保存每个节点,和线段树不同的是,线段树每个节点值保存一段的起始位置和...博文来自:xindoo

  例题地址K-thNumber(POJ2104)参考挑战程序设计一书中的内容。平方分割的方法,将所要查询的区间分割成接近Nmax−−−−√Nmax\sqrt{N_{max}}长度的区间,对于每一个分割的...博文来自:jianwei2016的博客

  个人感觉相对划分树而言,归并树是基于归并排序的分治思想(归并排序也可以快速求逆序数)归并树hdu4417SuperMario(求给定数在给定区间的中比它小的数的个数,或大小位置)(求逆序数)typed...博文来自:冰

  首先写一下归并树的版本吧归并树实际上是一种类似于归并排序外加线段树的东西用到线段树的地方就是划分区间。我们都知道,线段树是一层一层这样下来的,每层上有若干个区间。归并树的作用就是,对每一层上的所有区间...博文来自:水

  一、什么是归并排序?      归并排序的特点体现在“归并”上,“归并”就是“合并”!将两个或两个以上有序的序列合并为一个有序的序列。而2路归并就是将两个有序序列合并为一个有序序列。二、一个2路归并排...博文来自:迷雾江湖 的博客

  外排序--------数据结构  2011-06-1617:24:11  分类: 数据结构举报字号 订阅一.外排序的基本方法是归并排序法。它分为以下两个步骤:(1)生成若干初始归并段(顺串),也...博文来自:计算机技术博客

  首先我们定义一个具有基本操作方法的Queue类,在这个类中我们设置了一个bool型的变量tag,通过判断tag的值来判断队列是否为空、是否为满。具体是:rear==frontamp;amp;...博文来自:Lee.rw的博客

  不同的情况判断堆满和队空的情况是不一样的。顺序存储结构的循环队列假设循环队列的队尾指针是rear,队头是front,其中QueueSize为循环队列的最大长度。(1)入队时队尾指针前进1:(rear+...博文来自:疯狂的1024

  划分树和快排划分有关,归并树和归并排序的归并有关。 在求解区间第k个数的问题,除了划分树以外我们还可以使用另一种高效的方法------归并树。1、算法描述     所谓归并树,就是利用线段树的建树过程...博文来自:zzu::myorange

  前面对算法分析的一些常用的 渐进符号 做了简单的描述,这里将使用归并排序算法做为一个实战演练。这里首先假设读者对归并排序已经有了简单的了解(如果不了解的同学可以自行百度下归并排序的原理)。了解此算法的...博文来自:的博客

  POJ2104为例思想:利用归并排序的思想:建树过程和归并排序类似,每个数列都是子树序列的合并与排序。查询过程,如果所查询区间完全包含在当前区间中,则直接返回当前区间内小于所求数的元素个数,否则递归的...博文来自:Tuesday

  题目链接:解题思路:因为查询的个数m很大,朴素的求法无法在规定时间内求解。因此应该选用合理的方式维护数据来做到高效地查询。如果x是第k个数,...博文来自:piaocoder

  转载请注明出处,谢谢 第一次接触,自己也没啥好总结的,都是看...博文来自:窝不是爱酱,喵~~~~

  *题意:给定一个序列key[1..n]和m个询问{s,t,rank}(1分析:由于2761和这题差不多,且数据量是这题的10倍,所以我一开始就把2761的SBT代码交上去,结果竟然是TLE,估计是栽在...

  在引用循环队列前,我们需要了解队列是如何线性实现的。简单地讲,便是当队列为空时,front=rear=0,每当插入元素尾指针+1,删除元素是头指针-1。但是,我们会发现一个问题,如上面的第四个图,0,...

  前几回,在前面已经对冒泡排序、直接插入排序、希尔排序、选择排序、快速做了说明分析(具体详情可点击下方的链接查看)。这回,将对归并排序进行相关说明分析。一、排序算法系列目录说明冒泡排序(BubbleSo...

  1、为什么会引入循环队列?    对于顺序队列,头指针和尾指针开始时刻都指向数组的0下标元素。当加入新元素以后,尾指针向后移动,指向最后一个元素的下一个位置。但是尾指针不能超过数组的最大范围。当有元素...

  Description给两个长度均为n的序列a和b,对这个序列做m次操作,每次操作是将a序列某一段区间的所有数改成同一个值,问每次操作后满足a[i]=b[i]的i的个数Input第一行为一整数T,对...

  胜者树与败者树        胜者树和败者树都是完全二叉树,是树形选择排序的一种变型。每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。      不同的是,胜者树的中间结...

  在引用循环队列前,我们需要了解队列是如何线性实现的。简单地讲,便是当队列为空时,front=rear=0,每当插入元素尾指针+1,删除元素是头指针-1。但是,我们会发现一个问题,如上面的第四个图,0,...

  何时队列为空?何时为满?由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时头尾指针均相等。因此,我们无法通过front=rear来判断队列“空”还是“满”。注:先进入的为‘头’...

  武当派一共有nn人,门派内nn人按照武功高低进行排名,武功最高的人排名第11,次高的人排名第22,…武功最低的人排名第nn。现在我们用武功的排名来给每个人标号,除了祖师爷,每个人都有一个师父,每个人可...

  使用的是全志H3的芯片,运行Debian Desktop系统的ARM版本Armbian,要控制外部几个IO口,可以使用很多种方法,如果对GPIO的操作速度有要求就需要使用直接操作内存寄存器的方式来控制...

  1.当我们发现无法联网时,我们运行下面命令或者ping命令rnip  addrrnrn结果没有显示局域网的IP地址rn2.我们去修改网卡配置文件,把网络连接打开rncd /rncd  /etc/sys...

  还记得去年在北京安博会上,看到一些厂家的展示台上,各种船舶、公路、车辆的高清视频直播,好奇这些数据是怎么接到现场的,现场成百上千家展台,不可能有那么大的带宽供应,细想数据肯定不是实时的,果然,盯着看了...

  Babosa的专栏jquery/js实现一个网页同时调用多个倒计时(最新的)

  jquery/js实现一个网页同时调用多个倒计时(最新的)nn最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!nnnn//jsn...

  上一篇博客介绍了如何解决Fragment重叠的问题,有需要的同学可以看一下,底部有demo下载。 n直通车:完美解决Fragment重叠本篇博客我们来说一下怎么让fragment重新加载布局资源文件。...

http://cairowatch.com/zuiyouguibingshu/76.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有