设为首页 - 加入收藏
广告 1000x90
您的当前位置:E乐彩票app下载 > 博弈树搜索 > 正文

树形索引(B-树查找、插入、删除)

来源:未知 编辑:admin 时间:2019-04-20

  B-树上每个节点包含多个关键码从小到大排序,是一种平衡的多路查找树。最底层节点称为外节点或叶结点,一般可省略。除了外结点,B-树上的节点还有终端结点(叶结点的上一层)和非终端结点(终端结点层以上的结点)。

  (3)除根节点和外节点之外的每个结点,子树个数[m/2](向上取整)~m

  若该节点为根节点,则1=n=m-1,否则,[m/2]向上取整=n=m-1。若该结点为终端节点,则Ai,i=0,1,...,n为指向外结点的指针,即空指针。若该结点为根或非终端结点,则Ai为指向子树根节点的指针,指针Ai-1所指子树中所有结点的关键码均小于Ki,指针Ai所指子树中所有节点的关键码均大于Ki。

  根节点关键字个数 1~m-1(根非叶子),非根结点关键字个数 m/2向上取整-1~m-1

  B-树通常存在磁盘上,则前一查找操作是在磁盘上进行的,后一查找操作在内存中进行,,即在磁盘上找到指针p所指结点后,先将结点中信息读入内存,然后,再利用顺序查找或二分查找查询等于K的关键码。显然,在磁盘上进行一次查找比在内存上进行一次查找耗时,故,在磁盘上进行查找的次数,即待查关键码所在结点在B-树的层次数,是决定B-树查找效率的首要因素。

  第一层至少有1个结点,第二层至少有2个结点,由于除根结点外每个非叶结点至少有[m/2]颗子树,则第三层至少有2[m/2]个结点,第四层至少有2[m/2]^2个结点,....,以此类推,第l+1层至少有2[m/2]^(l-1)个结点,而l+1层为外结点。若m阶B-树有n个关键码,则外结点即查找不成功的节点数位n+1,故

  首先在某个终端结点中插入一个关键码,若该结点关键码个数=m-1,插入完成,若超过m-1,即插入后结点中关键码个数为m时,则要对该结点进行分裂操作,使得结点中关键码个数满足[m/2]-1=n=m-1。

  a.利用前述的B-树的查找算法查找关键字的插入位置。若找到,则说明该关键字已经存在,直接返回。否则查找操作必失败于某个最低层的终端结点上。

  b.判断该结点是否还有空位置。即判断该结点的关键字总数满足nm-1,则直接把关键字k插入到该结点的合适位置上。若不满足,说明该结点己没有空位置,需要把结点分裂成两个。

  分裂的方法是:生成一新结点。把原结点上的关键字和k按升序排序后,从中间位置把关键字(不包括中间位置的关键字)分成两部分。左部分所含关键字放在旧结点中,右部分所含关键字放在新结点中,中间位置的关键字连同新结点的存储位置插入到父结点中。如果父结点的关键字个数也超过(m-1),则要再分裂,再往上插。直至这个过程传到根结点为止。

  首先找到要删除的关键码所在结点,假设所删关键码为非终端结点中Ki,则可用指针Ai所指子树中最小关键码Y代替Ki,然后在相应终端结点中删去Y,这样就转为删除终端结点中的关键码的问题了。

  (1)被删关键码所在结点中的关键码个数=[m/2],说明删去该关键字后该结点仍满足B-树的定义。这种情况最为简单,只需从该结点中直接删去关键字即可。

  (2)被删关键码所在结点中关键码个数n=[m/2]-1,说明删去该关键字后该结点将不满足B-树的定义,需要调整。

  调整过程为:如果其左右兄弟结点中有“多余”的关键字,即与该结点相邻的右(左)兄弟结点中的关键字数目大于[m/2]-1。则可将右(左)兄弟结点中最小(大)关键字上移至双亲结点。而将双亲结点中小(大)于该上移关键字的最大(小)关键字下移至被删关键字所在结点中。

  (3)被删关键码所在结点和其相邻的左右兄弟节点中的关键码个数均等于[m/2]-1,左右兄弟都不够借。

  需把要删除关键字的结点与其左(或右)兄弟结点以及双亲结点中分割二者的关键字合并成一个结点,即在删除关键字后,该结点中剩余的关键字加指针,加上双亲结点中的关键字Ki一起,合并到Ai(即双亲结点指向该删除关键字结点的左(右)兄弟结点的指针)所指的兄弟结点中去。如果因此使双亲结点中关键字个数小于[m/2]-1,则对此双亲结点做同样处理。以致于可能直到对根结点做这样的处理而使整个树减少一层。

  总之,设所删关键字为非终端结点中的Ki,则可以指针Ai所指子树中的最小关键字Y代替Ki,然后在相应结点中删除Y。对任意关键字的删除都可以转化为对最下层关键字的删除。

  a、被删关键字Ki所在结点的关键字数目不小于ceil(m/2),则只需从结点中删除Ki和相应指针Ai,树的其它部分不变。

  b、被删关键字Ki所在结点的关键字数目等于ceil(m/2)-1,则需调整。调整过程如上面所述。

  c、被删关键字Ki所在结点和其相邻兄弟结点中的的关键字数目均等于[m/2]-1,假设该结点有右兄弟,且其右兄弟结点地址由其双亲结点指针Ai所指。则在删除关键字之后,它所在结点的剩余关键字和指针,加上双亲结点中的关键字Ki一起,合并到Ai所指兄弟结点中(若无右兄弟,则合并到左兄弟结点中)。如果因此使双亲结点中的关键字数目少于[m/2]-1,则依次类推.

  否是是否初始化根节点判断是否是叶子节点a.选择节点执行模拟节点移动b.执行神经网络模拟估值游戏结束设置叶子节点胜平负valueb.扩展叶子节点设置该节点value为神经网络预测的valuec.根据va...博文来自:mergerly的专栏

  1.树与树的遍历树是一种在实际编程中经常遇到的数据结构,它的逻辑结构很简单:除了根节点之外每个节点只有一个父节点,根节点没有父节点;除了叶节点之外所有节点都有一个或者多个子节点,叶节点没有子节点。父节...博文来自:沈春旭的博客

  编译reason_W出品 AI科技大本营(公众号ID:rgznai100)长久以来,计算机在围棋领域不可能达到人类专家的水平一直是学术界的主流观点。围棋,被认为是人工智能的“圣杯”——一个我们原本...博文来自:AI科技大本营

  蒙特卡洛树搜索的基本概念蒙特卡洛树搜索会多次模拟博弈,并尝试根据模拟结果预测最优的移动方案。蒙特卡洛树搜索的主要概念是搜索,即沿着博弈树向下的一组遍历过程。单次遍历的路径会从根节点(当前博弈状态)延伸...博文来自:Haward

  B树家族磁盘I/O操作的基本单位为块。从磁盘上读取信息时,会把包含信息的整个块读入内存;将信息存储到磁盘上时,也需要将整个块写到磁盘上。当每次从磁盘上请求信息时,都必须先在磁盘上定位该信息。磁头移动到...博文来自:leap的博客

  简介:本文主要介绍了B树和B+树的插入、删除操作。写这篇博客的目的是发现没有相关博客以举例的方式详细介绍B+树...博文来自:的博客

  /**Copyright(c)2017,烟台大学计算机与控制工程学院 *文件名称:学生成绩管理系统*文件标识:无*内容摘要:实现学成成绩的输入、插入、删除、修改、排序和输出*其他内容:无*当前版本:v...博文来自:sunshine1119213的博客

  MDB+树有两种定义,一是严蔚敏老师的数据结构一书的定义,二是维基百科的定义,本文采用维基百科的定义并实现。前提知识:掌握...博文来自:专注大规模数据处理

  B+树MYSQL索引使用原则MySQL一直了解得都不多,之前写sql准备提交生产环境之前的时候,老员工帮我检查了下sql,让修改了一下存储引擎,当时我使用的是Myisam,后面改成InnoDB了。为...博文来自:u014066037的博客

  现在有一棵二叉树查找树如下:如果我们需要删除一个结点,而且在删除之后,依然满足二叉查找树的数据排序策略。此时删除操作可分为一下三种情况。如下情况1:结点没有左子树如图:一棵没有左子树的二叉树如果在此情...博文来自:Zxn、Sirius荣耀之路

  B树       即二叉搜索树:      1.所有非叶子结点至多拥有两个儿子(Left和Right);      2.所有结点存储一个关键字;      3.非叶子结点的左指针指向小于其关键字的子树...博文来自:JuinH的博客

  B树、B-树、B+树、B*树都是什么       今天看数据库,书中提到:由于索引是采用B树结构存储的,所以对应的索引项并不会被删除,经过一段时间的增删改操作后,数据库中就会出现大量的存储碎片,这和磁...博文来自:史迪阳的博客

  B-Tree、B+TreeB-TreeB树又叫平衡多路查找树。一棵m阶的B树的特性如下:树中每个结点最多含有m个孩子(m=2);除根结点和叶子结点外,其它每个结点至少有[ceil(m/2)]个孩子(...博文来自:走在命运的左岸

  B+-treeB+树:是应文件系统所需而产生的一种B-tree的变形树,通常用于数据库和操作系统的文件系统中。为什么说B+-tree比B树更适合实际应用中操作系统的文件索引和数据库索引?B+-tree...博文来自:黑夜之星的博客

  1、B-树的介绍B-树其实就是我们平时所说的B树,除了B-树外,还有另外一种叫B+树,我们这里先介绍什么是B-树: B-树是一种平衡的多路查找树,它在文件系统中很有用(原因之前已经介绍了)。B-树的结...博文来自:的博客

  摘要:本文对B树索引的结构、内部管理等方面做了一个全面的介绍。同时深入探讨了一些与B树索引有关的广为流传的说法,比如删除记录对索引的影响,定期重建索引能解决许多性能问题等。 1.B树索引的相关概念  ...博文来自:小旭的技术博客

  B+树索引伪代码一——搜索;B+树索引操作伪代码二——插入;B+树索引操作伪代码三——删除。...博文来自:九宫霓虹

  过程包括以下四步:选择Selection:从根节点R开始,递归选择最优的子节点(后面会解释)直到达到叶子节点L。扩展Expansion:如果L不是一个终止节点(也就是,不会导致博弈游戏终止)那么就创建...博文来自:盐可

  承接之前的『树』,本文将目标特别锁定在『查找树』;这里整理出我遇到的各种形式的查找树,以后可能会不定期更新,以尽可能多的囊括所有种类的查找树;虽然标题为“搜索树”,但是我还是习惯叫“查找树”,以下也...博文来自:Twinkle

  承接之前的『树』,本文将目标特别锁定在『查找树』;这里整理出我遇到的各种形式的查找树,以后可能会不定期更新,以尽可能多的囊括所有种类的查找树;虽然标题为“搜索树”,但是我还是习惯叫“查找树”,以下也将...博文来自:清风阁

  讲到B树那就不得不谈一谈查找,查找不是一种数据结构而是一种基于数据结构的对数据进行处理时经常使用的一种操作。平均查找长度ASL=∑Pi×Ci(其中Pi为查找第i个记录的概率,Ci为查找第i个记录所用的...博文来自:MikeoPerfect的博客

  看完《算法导论》的B书一节,写点读书笔记。背景博文来自:SwineX00的专栏

  我在大二上学期的数据结构实验设计中选择了B树这个题目,该B树的数据结构实现采用了C语言。趁现在寒假整理完写一篇博文记录我的学习。文末提供了项目源代码的地址。B树的定义一棵m阶B树(BalancedTr...博文来自:GDUT小铭的博客

  参考算法导论第三版1.B树的定义任何和关键字相联系的“卫星数据”将于关键字一样存放在同一个节点中。一棵B树T是具有以下性质的有根树(根为T.root):1.每个节点x都有下面属性:a.x.n,当前存储...博文来自:ddhdzt的专栏

  一:AVL树介绍AVL树本质上还是一棵二叉搜索树,它的特点是:1.本身首先是一棵二叉搜索树。2.带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1。在本文中用分别用-1,0,1定义...博文来自:FreeeLinuxs blog

  本片博客前面部分截取自算法(第4版)定义: 查找:要判断一个键是否存在树中,先将它和根节点中的键比较,如果它和其中任意一个相等,查找命中;否则就根据比较的结果找到指向相应区间的连接,并在其指向的子树中...博文来自:早起的虫儿灬

  最近工作中需要利用ztree实现树搜索功能,在网上看了一下别人的轮子觉得都有点不适合需求,所以根据自己的实际情况进行了改进,经过几次优化,觉得效果还能用: /***搜索功能3.0*@type{Elem...博文来自:ym_diver的博客

  本代码花了我四天时间,还有不足之处,希望对大家有一点帮助。相关理论知识参见《数据结构基础》张力译版 ,另有一篇转载的博客作为参考;我是先实现的B—树,在B-树的基础上实现的B+树 可以先看B-树,再看...博文来自:sky的专栏

  B-树1.B-树定义B-树是一种平衡的多路查找树,它在文件系统中很有用。定义:一棵m阶的B-树,或者为空树,或为满足下列特性的m叉树:⑴树中每个结点至多有m棵子树;⑵若根结点不是叶子结点,则至少有两棵...博文来自:hijiankang的专栏

  一、B树的概念B树是平衡的多叉树,一个节点有多于两个(不能小于)结点的平衡多叉树。由于B树倒着生长所以平衡。缺点:浪费空间二、B树满足以下性质:1、根结点至少有两个孩子。[2,M]个孩子2、每个非根结...博文来自:ArchyLi

  B树       即二叉搜索树:      1.所有非叶子结点至多拥有两个儿子(Left和Right);      2.所有结点存储一个关键字;      3.非叶子结点的左指针指向小于其关键字的子树...博文来自:Dean

  c++实现二叉树的:中序遍历、前序遍历、后序遍历插入、删除、根据键值查询树形打印获取键值最大或最小的结点获取键值大于当前结点的最小结点获取结点总数获取树高...博文来自:desirepath的博客

  2015年9月7日周一由JeffBradberry留   与游戏AI有关的问题一般开始于被称作完全信息博弈的游戏。这是一款对弈玩家彼此没有信息可以隐藏的回合制游戏且在游戏技术里没有运气元素(如扔骰子或...博文来自:z84616995z的专栏

  一棵二叉搜索树(BST)是以一棵二叉树来组织的,可以用链表数据结构来表示,其中,每一个结点就是一个对象,一般地,包含数据内容key和指向孩子(也可能是父母)的指针属性。如果某个孩子结点不存在,其指针属...博文来自:雨的微笑

  一、什么是二叉查找树:顾名思义,一棵二叉查找树是以一棵树的形式组织起来的,如图一所示。其可以使用一个链表数据结构来表示,其中每个节点就是就是一个对象。除了包含数据域之外还包含属性lchild、rchi...博文来自:heart_love的博客

  1. 前言 隐马尔科夫HMM模型是一类重要的机器学习方法,其主要用于序列数据的分析,广泛应用于语音识别、文本翻译、序列预测、中文分词等多个领域。虽然近年来,由于RNN等深度学习方法的发展,HMM模型...博文来自:tostq的专栏

  有了上篇单目标定示例程序的经验,双目标定就是小菜一碟哈。 本人目前菜鸟,但还是愿意厚着脸皮分享我一下午的成果。不要拍我... 1.找到目录   ...\opencv\sources\sam...博文来自:t247555529的博客

  reids是一个key-value存储系统,为了保证效率,缓存在内存中,但是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,以保证数据的持久化。   所以:redis是一...博文来自:那么好,

  帐号相关流程注册范围 企业 政府 媒体 其他组织换句话讲就是不让个人开发者注册。 :)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账...博文来自:小雨同学的技术博客

  XML基础+Java解析XML 一:XML基础 XML是什么: 可扩展的标记语言 XML能干什么: 描述数据、存储数据、传输(交换)数据。 XML与HTML区别: 目的不一样 XML...博文来自:NWK工作者的博客

  最近在公司做一个项目,老大让我们实现加解密的方法,我把工作直接推给了java服务端,他们也是直接在网上copy的代码,说我直接放到我的android代码中就可以了,不需要太多的更改。我就照做了,但是在...博文来自:HarryWeasley的专栏

  多重背包问题:有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件。怎样装才能使背包内的物品总价值最大?网上关于“多重背包”的资料倒是不少,但是关于怎么实现O(N*...博文来自:flyinghearts的专栏

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...博文来自:我走小路的博客

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:九野的博客

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

  详细过程见下面的链接: 需要更新的是: 1. 原文中bag 数据的下载地...博文来自:feixin620的博客

  默认maven的本地仓库的位置是在C盘,如果重装了系统,仓库就没了,因此,把仓库位置改到其他盘。     第一步:打开maven安装位置下的conf/settings.xml;   第二步:在第5...博文来自:a24b86的博客

  花了几天,终于把matlab版的人脸检测运行成功了,虽然正确率不是很高,看着各种论文上的人脸检测正确率都出奇的高,我是不怎么相信的,有的论文连基于平均脸的人脸检测正确率都能达到98%,汗啊~~  也许...博文来自:海海人生

  最近在学习大数据,在学习的时候碰到了一个问题就是给CentOS虚拟机配置静态IP后,就无法访问网络了,这个问题纠结了我好长时间,现在终于找到解决方法了,赶紧记录下来,以备以后查询。注: 我这里说的方法...博文来自:u012453843的专栏

  上一篇文章讲解了SNMP的基本架构,本篇文章将重点分析SNMP报文,并对不同版本(SNMPv1、v2c、v3)进行区别! 四、SNMP协议数据单元 在SNMP管理中,管理站(NMS)和代理(Age...博文来自:假装在纽约

  CGLIB介绍与原理(部分节选自网络) 一、什么是CGLIB? CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。通常可以使用Java的动...博文来自:zghwaicsdn的专栏

  分页实现的效果:      /**/ 组图0-1.分页实现效果图一       /**/ 组图0-2.分页实现效果图二 一、从效果可以看出内容由两部分组成: 1.学生信息     数据库中插入一些记录...博文来自:niaonao

  在MATLAB中,可以注释一段程序。 使用“%{”和“%}”。 例如 %{ 。。。 %} 即可。 经典方法是用 if 0,但缺点是不够直观,注释掉的内容仍然保持代码的颜色。现在可以用 ...博文来自:知识小屋

  weixin_43929966:您好,请问您有这篇文章的代码吗?如果的有的话,麻烦您发我的QQ邮箱一下,谢谢

本文链接:http://mzi-ads.com/boyishusousuo/263.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top