一种基于并查集的SLCA求解算法.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一种基于并查集的SLCA求解算法.pdf

山东省农业管理干部学院学报 2009笠 第23卷 第6期 一 种基于并查集的SLCA求解算法 刘 杰 (青岛酒店管理职业技术学院,山东青岛 256100) 摘要:LISAII算法需要映射使用前序编码的扩展Dewey码,该编码具有许多冗余信息,因此提出一种使用层次编 码的新的算法。该算法以LISA II为原型,基于层次编码,在理论时间性能几乎相同的情况下,使用了更少的存 储空间。 关键词:SLCA;LISAII;并查集;层次编码;SLCA求解算法 中图分类号:TP311 文献标识码:A 文章编号 一 、 相关工作 序遍历右子树 。 SLCA是实现XML信息检索研究中关键字查询的一个基本 后序遍历:1.后序遍历左子树;2.后序遍历右子树: 问题,其主旨就是求解所有包含给定关键字的紧致子树的 3.访 问根节点。 根节点。xu等人给出了3种算法:基于索引的搜索算法 层次遍历的方式有所不同,它是从树的根节点开始, (indexedlookupeager,简称 ILE)、基于堆栈的算法以 自上 向下 , 自左 向右, 及基于扫描的算法 (scaneager,简称SE),并通过实验证 分层访问树中的各个节点,层次编码便是根据树的层 明ILE算法具有最好的表现 [23。与基于B十树索引结构的ILE 次遍历先后顺序形成的编码。 算法不同,所给出的新算法,称为LISA(1aYered 层次编码简单实用,但是无法根据编码判断两个节点 intersectionscnalgorithm)方法。该方法基于 SLCA节 是否处在同一层次,为此 ,可以将层次编码扩展成数组 点按 “层”分布的规律,采取了逐层求解 SLCA节点的思 [1eve1,code]的形式:1evel表示节点所处的层次信息, 路,即在获取了包含关键字的节点的Dewey码集合后,通 code表示节点在层次遍历中的顺序。这种扩展方式可以直 过计算对应于不同关键字、不同层次的Dewey码前缀集合的 观的得到每个节点的层次信息,但是会 占用大量的存储空 交集,可以得到对应不同层的SLCA节点。与 ILE相 比, 间,因此 ,可以用下面的方式对其进行改进:使用数组 LISA除了只需对应于关键字的节点集合信息以外,不再需 [start,end]表示树的每层的编码区间,start表示每层节 要其他复杂的辅助数据结构,全部的信息只是对应不同关 点的最小编码,end表示每层节点的最大编码。因此,判 键字的Dewey码集合 以及排序操作。 断两个节点是否属于同一层时,只需判断这两个节点的编 二、层 次编码 码是否处在同一编码区间中。 USSSA算法与前面所提到的几种较成熟的SLCA求解算法 三、算法描述及示例 不同,并不基于DeweY编码,而是基于层次编码。 4.1USSSA算法描述 树是一种非线性结构,每个节点可能有不止一个直接 利用层次编码,可以对LISA II算法进行改进,从而 后继,这样必须规定树的遍历规则,按此规则遍历树,可 使得需要的存储空间降低。具体思想为以LISA II算法为 得到树节点的一个线性序列。树的遍历分前序遍历、中序 原型,抛弃扩展Dewey编码,而改用可以定长的层次编码 遍历、后序遍历和层次遍历四种情况,其中前三种遍历方 方法进行标记,仍然按照从后向前的分层顺序进行处理, 式都是递归定义的。 此时通过映射来查找每个节点的父节点来进行迭代。每次 前序遍历:1.访 问根节点;2前序遍历左子树:3.前 迭代中,仍然使用集合交操作来查找 SLCA节点[3]。具体 序遍历右子树 。 算法如下所示: 中序遍历:1.中序遍历左子树;2访问根节点;3.中

文档评论(0)

叶峰 + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档