当前位置: 首页 > 专利查询>英特尔公司专利>正文

改进型多路基数树制造技术

技术编号:2863710 阅读:373 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种方法和装置,用于向包括一串符号的关键字中的符号指派逻辑层号,并且至少部分基于所述逻辑层号,而不是基于代表所述关键字中每个符号的节点之间的路径,在多路基数树的一个节点层中存储所述关键字的条目。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术一般地涉及数据结构领域,更具体地说,涉及一种改进型多路基数树(radix tree)以及有关方法。
技术介绍
计算机系统高速处理数据的能力部分取决于它们对文件分配表和数据库内的特定信息项进行快速的随机访问的能力。通过使这些表和数据库在存储介质上或存储器中具有某种组织形式,有助于对特定数据的快速访问。在数据库的情形下,上述组织形式通常包括将数据划分为若干记录,并把每条记录划分为多个字段。例如,每条记录可能对应于一个人,在这个人的记录当中,其中一个字段可以是这个人的名字,而另一个字段可以是这个人的地址。这种结构加速了对特定数据项的搜索,这是因为当多个字段位于各条记录的同一部分时,只搜索那些感兴趣的字段,而不必搜索整个记录。与一组记录有关联并被挑选出来用于搜索的特定字段有时被称为关键字字段,不过关键字可以是对一组记录进行搜索或排序所利用的任何项。例如,如果利用邮政编码对名字和地址的数据库进行搜索,那么邮政编码就是每条记录的关键字。每个关键字与相关联的记录之间通常具有某种链接,使得一旦发现了关键字,就可以找到相关联的记录。通过将关键字加载到计算机的存储器中,用电学方法组织并搜索关键字,就可以相当快地执行关键字搜索。可以对载入计算机系统的存储器中的关键字依次进行搜索。然而,有多种方案无需依次检查每个关键字就可以快速并有效地找到想要的关键字。一种促进关键字搜索的方案就是将关键字分批为多个组,并使用串函数来寻找哪一批次包含着正确的关键字。然后将正确的关键字从它的批次中提取出来。另一种搜索方案则是首先排序关键字,使得随后可以基于单个性质,而相对于其它关键字找到某个关键字,所述性质例如是关键字的首字母或者关键字的数字值。如果所要排序的关键字数量较小,那么用短小的可执行程序来实现的任何排序算法都足够了。然而,当关键字的数量变大时,就有必要使用更快的排序技术,即使这种技术更加复杂。排序关键字最快也最富有效率的方法之一就是将关键字排列为树形,使得从根位置开始的搜索只需要寻找正确的分支、子分支和叶,以找到正确的关键字。还有很多其它已知的排序方案,例如快速排序法、冒泡排序法、插入排序法、合并排序法、选择排序法、希尔(shell)排序法和基数排序法。基数排序在逻辑上将关键字排列为多路基数树(“MRT”),使得计算机可以遍历树的各个分支,从而非常快地搜索到各项。术语“基数(radix)”用来表示数字系统(numbering system)的基,例如,二进制数字的基数是2,十进制数字的基数是10。基数数字通常定义了可用来构造关键字的符号的数量。一般来说,基数排序法排列数据的方式是基于每项数据所具有的某种属性对它们进行分类,而不是将该项数据和其它数据做比较以发现它在排列中的相对位置。例如,如果对单词进行排序,所有以“a”开头的单词可能被放入一组,所有以“b”开头的单词被放入另一组,依此类推。接着,可用同样的方式对每一组的成员排序,即使用每个单词的第二个字母。如果这些组是按树形排列的,那么要想寻找某个包括序列“abc”的关键字,则需遍历以下路径,即从树的根开始,遍历到“a”分支,然后从“a”分支到“b”子分支,再从“b”分支到“c”叶。当到达“c”叶时,它可能指向或包含一个地址,该地址标识出与所述关键字相关联的条目的位置。上述条目可包含任何东西,例如记录号、指向程序中子例程的指针、符号、甚至关键字本身。按MRT排列的关键字的各个符号通常被称作节点,或者可被存储在被称为节点的存储器空间中。排列为MRT的索引文件中每个关键字通常都有几个用作指针的附加字节,它们被称为链接。这些链接将某个节点与一个或多个节点连接起来,例如,一组孩子节点被链接到根节点,所述根节点是遍历树的起始点。其它孩子节点可被链接到上述孩子节点。而在某个孩子节点与根节点之间的节点就是该孩子节点的双亲节点。于是,MRT就是构建为树的关键字的表,通常用来索引一个数据文件,其中,根据关键字所包含的符号来排序这些关键字。虽然MRT上的每个节点与用来构成关键字的符号组中的各个符号相对应,但是MRT中的每个节点也从逻辑上代表了从根节点到该节点自身的一条路径中的其双亲节点中所体现的符号序列。因此,节点之间的一条独特路径代表了树中的每个关键字。这些独特的路径允许从根节点对关键字进行短程的直接访问。在已知的MRT中,从根节点到关键字的最后节点之间的路径中的节点数量等于关键字中符号的数量。在已知的MRT方案中,存储器空间不仅是为实际的关键字条目保留的,也是为潜在的关键字条目保留的,这些潜在的关键字条目可能随后使用在每种方案中都允许的多种符号组合方式而被添加到树中。换言之,已知的MRT方案要求一个关键字中的每个符号都在不同的层上表示,因此要添加一个给定的关键字,就要比所需的建立更多的MRT结构。可以计算出在已知的MRT方案中所浪费的存储器空间的数量。分配用于一层的存储器空间一般与基数相等,即用来构造关键字的可能的符号“m”。因此,m的值取决于在某个特定的方案中被用来构造关键字的符号的“字母表”。例如,使用英文字母表的关键字具有26个可能的符号。数字关键字的m值等于所使用的数字系统的基。例如,二进制关键字的m值等于2,十进制关键字的m值等于10,十六进制关键字的m值等于16。由于已知的MRT通过将关键字中的每个符号分派到包含m个节点的一层上,藉此建立树,所以一个具有n个符号的关键字被分配了n个具有m个节点的层。例如,当使用“apples”作为关键字时,一般为这个关键字的六个符号中的每一个符号都分配一个包含26个节点的层,从而导致156个节点的存储器分配结果。包含类似符号的关键字条目可能使用一些空节点。但是每当向树中添加一个比这棵树中现存的任何关键字都具有更多符号的关键字时,都必须向这棵树中至少添加一个具有m个节点的新层。将一个关键字中的每个符号都分派到独特的一层,这样来分配存储器可能很不必要地产生大量包含无用存储器空间的相对较空的大MRT,遍历这种MRT既不方便又很慢。当关键字的表相对稀疏的时候,这种问题格外明显。附图说明图1是适于实施本专利技术一些实施例的计算设备的图形表示。图2是可由现有技术的MRT和本专利技术的MRT来组织和搜索的关键字的表。图3是现有技术的MRT的图表表示。图4是根据本专利技术的一个方面,对改进型MRT的第一实施例的图表表示。图5是用于实现本专利技术的改进型MRT的示例性方法的流程图。图6是根据本专利技术的一个方面,用于搜索改进型MRT的示例性方法的流程图。图7是根据本专利技术的一个方面,对改进型MRT的第二实施例的图表表示。图8是用于实现本专利技术的改进型MRT的示例性装置700的框图。图9是一件产品的图表表示,该产品包括提供指令的机器可读介质,所述指令使得机器实现本专利技术的改进型MRT和/或一种或多种相关方法。具体实施例方式这里所描述的是改进型多路基数树和相关方法。本专利技术更改了MRT的传统结构,使得从根节点到关键字的条目的路径中的节点数量可少于这个关键字中的符号数量。本专利技术可用于在控制电路中和/或在计算设备的存储器中执行快速和有效的关键字搜索。本专利技术所建立的MRT存储关键字所需的树型数据结构的数量减少了。根据本专利技术的一个实施例,可以使用改进型MRT在两个物理节点层上为某个关键本文档来自技高网...

【技术保护点】
一种方法,包括:向包括一串符号的关键字中的符号指派逻辑层号;以及至少部分地基于所述逻辑层号,而不是基于代表所述关键字中每个符号的节点之间的路径,在多路基数树的一个节点层中存储所述关键字的条目。

【技术特征摘要】
US 2002-1-8 10/043,7641.一种方法,包括向包括一串符号的关键字中的符号指派逻辑层号;以及至少部分地基于所述逻辑层号,而不是基于代表所述关键字中每个符号的节点之间的路径,在多路基数树的一个节点层中存储所述关键字的条目。2.如权利要求1所述的方法,其中,所述数据结构由多个节点层组成,这些节点层是根据指派给它们的逻辑层号的大小升序来排列的。3.如权利要求2所述的方法,其中,所述关键字中最少数量的符号被用来将该关键字与存储在所述树中的其它关键字区分开来,并且所述数据结构只具有用于所述关键字中某些符号的节点层,所述某些符号是用来将所述关键字与存储在所述树中的其它关键字区分开来的符号。4.如权利要求2所述的方法,其中,对所述关键字的搜索使用与所述关键字的长度相对应的逻辑层号来寻找存储所述关键字的节点层。5.一种方法,包括为了在存储器中存储关键字,建立树的根节点和第一层节点,其中每个关键字具有一串符号;建立一个指针,该指针从所述根节点指向所述第一层节点中与某个关键字的第一个符号相对应的节点;建立第二节点层,以在对应于所述关键字中最后一个符号的节点中存储所述关键字的条目;以及建立一个指针,该指针从所述第一层节点中对应于所述关键字中第一个符号的节点指向所述第二节点层中对应于所述关键字中最后一个符号的节点。6.如权利要求5所述的方法,还包括向用于所述第一节点层的逻辑层号指派与所述关键字中第一个符号相对应的、等于1的第一逻辑层值;并且向对应于所述关键字中的最后一个符号的所述第二节点层的逻辑层号指派等于n的第二逻辑层值,其中n等于所述关键字中符号的数量。7.如权利要求6所述的方法,其中,用于在与新关键字中最后一个符号相对应的节点中存储所述新关键字的条目的新节点层被添加到和/或插入到所述树中现有的节点层之间,在此过程中,根据逻辑层号的升序来依次排列所述树中的所有节点层。8.如权利要求7所述的方法,还包括当逻辑层号处在双亲节点层和孩子节点层的逻辑层号之间的节点层被插入到所述双亲节点层和孩子节点层之间时,重新设置存在于所述双亲节点层和孩子节点层之间的指针。9.如权利要求8所述的方法,其中,所述的重新设置包括当代表关键字中第一个符号和该关键字中最后一个符号的节点之间的逻辑层的数量改变时,维护代表所述关键字中各符号的节点之间的逻辑路径。10.一种方法,包括a)在被构建为多节点的树、由已存储的关键字条目组成的表中,确定与包括一串n个符号的关键字的长度相对应的逻辑层号;b)搜索所述树中的根节点,以找到指向与所述关键字中第一个符号相对应的节点的指针;c)搜索与所述关键字中第一个符号相对应的节点,以找到指向下一节点层的指针;d)确认所述下一节点层是否被指派了与所述关键字的长度相对应的逻辑层号;e)如果向所述下一节点层指派了所述逻辑层号,则在所述下一节点层中搜索所述关键字的条目;f)如果未向所述下一节点层指派与所述关键字的长度相对应的逻辑层号,则在所述下一节点层中搜索指向后续的下一节点层的指针;以及g)重复d-f步骤,直到发现了关键字条目之一、不再有指向后续节点层的指针、以及与所述关键字中的所有符号相对应的节点层都已被搜索。11.如权利要求10所述的方法,还包括如果所述关键字未被找到,则插入新的节点层以存储所述关键字,包括沿着第一指针从所述根节点到达与所述关键字中的第一个符号相对应的节点;搜索与所述关键字中第一个符号相对应的节点,以找到指向下一节点层的第二指针;如果所述第二指针不存在,则建立下一节点层,在与所述关键字中最后一个符号相对应...

【专利技术属性】
技术研发人员:阿尔沙纳尼赫鲁马诺耶保罗
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1