- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)