CN1613073A - 改进型多路基数树 - Google Patents
改进型多路基数树 Download PDFInfo
- Publication number
- CN1613073A CN1613073A CNA038020246A CN03802024A CN1613073A CN 1613073 A CN1613073 A CN 1613073A CN A038020246 A CNA038020246 A CN A038020246A CN 03802024 A CN03802024 A CN 03802024A CN 1613073 A CN1613073 A CN 1613073A
- Authority
- CN
- China
- Prior art keywords
- key word
- node
- layer
- symbol
- described key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
- Input From Keyboards Or The Like (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明提供了一种方法和装置,用于向包括一串符号的关键字中的符号指派逻辑层号,并且至少部分基于所述逻辑层号,而不是基于代表所述关键字中每个符号的节点之间的路径,在多路基数树的一个节点层中存储所述关键字的条目。
Description
技术领域
本发明一般地涉及数据结构领域,更具体地说,涉及一种改进型多路基数树(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在两个物理节点层上为某个关键字的第一个和最后一个符号中的每一个符号建立一个逻辑节点层,但是不建立中间节点层来表示这个关键字在第一个和最后一个符号之间的符号。这样一来,虽然本发明所使用的改进型MRT缺少中间节点层,但是可以用和传统的非改进型MRT类似的方式,在改进型MRT上逻辑地表示每个所存储的关键字,同时使用了更少的存储器。
在本发明的另一个实施例中,改进型MRT可以使用最短的可能符号序列在树中存储关键字的条目。如果在依次检查节点期间发现了未存储关键字条目的节点,则***所述关键字的条目,而不再检查树以寻找所述关键字的后续符号。如果没有发现空节点,并且对应于关键字中下一符号的节点不存在,则建立所需的节点,并***所述关键字的条目,而不再搜索树以寻找所述关键字中的后续符号。
诸如“存储关键字”、“***关键字”和“存储/***关键字的条目”等术语在描述本发明时具有基本相同的含义:在改进型MRT上的某个节点处存储关键字的条目。本发明的普通技术人员将会理解,条目可以是与关键字相关联的存储器空间、指向某一存储器空间的指针、指向某个记录的指针、执行某个过程的指令、和/或所述关键字自身的表示,以上任何一种都可被附加到代表所述关键字的节点上。
图1示出了适于实施本发明多个实施例的计算设备100。计算机***100包含处理器102、存储器104、存储设备106、盘控制器108、键盘接口110和视频接口112,它们如图所示由一条或多条总线114耦合在一起。处理器102对数据进行访问,这些数据包括可存储在存储设备106中的计算机程序。另外,处理器102将计算机程序传送到存储器104中,并执行已驻留于存储器中的程序。在一个实施例中,本发明可以是软件,其作为被存储的程序而驻留于存储设备106上。在由处理器102访问后,本发明可以根据存储器104中本发明的教导,实现一种或多种改进型基数树。在另一个实施例中,本发明可以是附接于一条或多条总线114的独立模块中的硬件或硬件和软件的组合。本领域的普通技术人员将会明白,适于实施本发明的计算设备100可以包含附加的或不同的组件。
图2示出了适于在计算机存储器中排列为MRT的关键字表200。对于这个例子而言,关键字由2到11个符号组成,但是关键字可能是任何长度的或者是同一长度的。在这个例子中,用来构成关键字的符号是英文字母表中的字母,但是也能使用任何有限的符号集。用于索引计算机数据文件的常见的表通常都比这个例子拥有多得多的关键字。
图3示出了组织图2所示的关键字表200以用于多路基数搜索的现有技术MRT 300。以关键字表200中的第一个关键字“ab”202为例,根节点301指向第一节点层304中的孩子节点302。孩子节点302对应于关键字“ab”202中的第一个符号“a”。节点302指向第二节点层308中的节点306。节点306对应于关键字“ab”202中的第二个符号“b”。节点306指向叶节点310,而叶节点310指向关键字“ab”202的条目。叶节点一般都指向关键字的条目,例如与关键字相关联的记录。
对于关键字表200中的第二个关键字“abc”204,节点306指向孩子节点312,其对应于关键字“abc”204在第三节点层314中的符号“c”。节点312指向叶节点316,而叶节点316又指向关键字“abc”204的条目。
对于关键字表200中的第三个关键字“abd”206,节点306也指向孩子节点318,其对应于第三节点层314中的符号“d”。节点318依次又指向叶节点320,而叶节点320指向了关键字“abd”206的条目。
对于关键字表200中的第四个关键字“abcd”208,节点312指向孩子节点322,其对应于关键字“abcd”208在第四节点层324中的符号“d”。节点322依次又指向叶节点326,而叶节点326指向了关键字“abcd”208的条目。
对于关键字表200中的第五个关键字“apples”210,节点302指向孩子节点328,其对应于关键字“apples”210在第二节点层308中的符号“p”。节点328指向孩子节点330,其对应于新的节点层332中的第二“p”符号。节点330指向节点334,其对应于第四节点层336中的符号“l”。节点334指向节点338,其对应于下一节点层340中的符号“e”。节点338指向节点342,其对应于第六节点层344中的符号“s”。节点342依次指向叶节点346,而叶节点346指向了关键字“apples”210的条目。
对于关键字表200中以符号“b”开头的关键字,第一树层304中的节点348对应于符号“b”。对于关键字“bl”212而言,对应于符号“b”的节点348指向节点350,其对应于在与符号“b”相对应的节点348之下的第二层节点353中的符号“l”。节点350依次又指向叶节点352,而叶节点352指向关键字“bl”212的条目。
对于关键字“blueberries”214,对应于“blueberries”214的符号“l”的节点350指向孩子节点354,其对应于新的节点层356中的符号“u”。后面的孩子节点358、362、366、370、374、378、382和386对应于该关键字在后面的各层360、364、368、372、376、380、384和388中的接下来的符号。节点386依次又指向叶节点390,而叶节点390指向了关键字“blueberries”214的条目。
图4示出了根据本发明教导的MRT的第一实施例400,将它和图3中对传统MRT的描绘做比较。根据所图示的实施例,本发明建立MRT 400的根节点,该MRT 400被构建用来存储关键字,每个关键字都有一串符号。可以在计算机的寄存器、电存储器和/或任何能够以树形数据结构存储关键字的其它设备中建立MRT 400。MRT 400的树形结构是这样发展起来的:对于每一个关键字,都有一个指向该关键字的条目的叶节点。每个叶节点都依附于树,距离根节点有“n”层,其中n可能小于所述叶节点所对应的关键字中的符号数。只在一种情况下(关键字中的最后一个符号是可被用来找到用于存储关键字条目的空节点的唯一符号)才会基于关键字中的所有符号来存储关键字条目,即当n等于关键字长度时。
根据本发明的一个方面,通过向“物理”节点层指派一个逻辑层号,从而可建立改进型MRT,所述逻辑层号可能和物理层号相同或不同。根据传统的MRT模型,物理层号代表一个节点层,并可代表被分配给一个节点层的一层实际的存储器空间。相反,逻辑层号被指派给一个关键字或一个节点层的所选中特性。例如,在本发明的一个实施例中,逻辑层号代表关键字长度以及关键字在传统的MRT中将被存储的层。由于逻辑层号可被指派来代表关键字将被存储的层,所以逻辑层号可被用来***及取得关键字,而不象传统的MRT技术那样,沿着树上代表关键字中每个符号的节点之间的路径来***并取得所述关键字。例如,由七个符号组成的关键字将使得存储该关键字的物理节点层被指派给一个值为7的逻辑层值。如果物理层号小于所指派的逻辑层号,例如如果物理层2被指派了值为7的逻辑层值,则节省了资源,这是因为在这个例子中,在传统的MRT中存储关键字所需的七层节点被两个物理节点层取代。
根据本发明的一个实施例,对于一个具有很多符号的长关键字,由于仅使用该关键字中的第一个符号和最后一个符号来描述这个长关键字,因此只需要两个物理节点层来代表该关键字中的第一个符号和最后一个符号,第一物理节点层被指派给一个逻辑层号,该逻辑层号对应于传统的MRT中代表该关键字中第一个符号的节点所在的层,而指派给第二物理节点层的逻辑层号对应于传统的MRT中代表该关键字中最后一个符号的节点所在的层。使用上述技术的改进型MRT在多个逻辑节点层之间具有链接(“指针”)。具体地说,在上述实施例中,有一个指针存储在双亲节点(位于第一逻辑节点层中)中,这个双亲节点将搜索指引到(“指向”)代表所述关键字中最后一个符号的孩子节点(位于第二逻辑节点层中)。在传统的MRT中,一次搜索需要遍历关键字各个连续符号之间的指针,以到达该关键字中的最后一个符号(该关键字的条目被存储在这里),本发明与传统MRT不同,它可以在关键字的第一个符号和最后一个符号之间建立一条路径,或者在比传统MRT所使用的符号更少的关键字符号之间建立路径。在传统的MRT中可能需要很多节点层的长关键字在本发明的改进型MRT中可能只需要两个节点层或少一些的节点层。
根据本发明的另一个方面,在改进型MRT中存储某个关键字可能需要***物理节点层和/或逻辑节点层,在对一个或多个前面的关键字进行存储的过程中并没有***这些节点层。这特别出现在以下情形中:前面的关键字被存储在对应于该关键字中最后一个符号的逻辑层上,但是没有指派与第一个符号和最后一个符号之间的中间符号相对应的逻辑节点层。例如,当前在逻辑上基于其最后一个符号而被存储的关键字(因此以及它的关键字长度)可能需要一个在存储具有不同长度的在先关键字时省去的逻辑节点层。换言之,对在先关键字的存储已经建立了一条指针的路径,该路径可能从前面关键字的第一个符号直接前进到该在先关键字的最后一个符号。沿着这条为在先关键字而建立的截短路径来寻找与当前等待存储的关键字的长度相对应的先前存在的逻辑节点层时,***过程或设备可能发现在建立指针时,所需要的逻辑层已被省略。例如,如果长度为4的关键字需要逻辑层4,则逻辑层1可能已被直接链接到正被搜索以寻找***点的路径中的逻辑层11。为新的关键字***所需逻辑层的一种方法就是***一个或多个将由新的关键字和先前存储的关键字共同使用的新逻辑层,使得穿过新的“中间”逻辑层的指针可以导向上述两个关键字。从以上两个关键字中任意一个的起点出发,前进到该关键字的后续符号,对于在两个关键字之间相互匹配的每一对符号都***一个中间逻辑层。在两个关键字中的后续符号不匹配之处,不***任何附加的中间节点层。可能需要一个附加的节点层来提供代表新关键字的最后一个符号的节点。在新的(多个)中间节点层和先前存在的节点层之间可能要增加指针和/或对指针做出调整,以指向代表先前存在的关键字和新关键字的最后一个符号的节点。
本发明所建立的MRT消除了多层空节点。因此,总的来说,本发明所建立的MRT具有较少的空节点层,或者不具有任何空节点层,以下情况可能除外,即一个关键字条目被删除,而用来存储这个关键字条目的节点未被删除,由此产生了空节点层。
以关键字“appaloosa”为例,根节点401指向树的第一层,该层被称为第一节点层404。由于根节点401在任何逻辑搜索的起始层都存在,所以这个关键字的第一个符号(即“a”)在根节点401层用来搜索指向孩子节点402的指针。如果应当包括被搜索的孩子节点402的第一节点层404不存在,则建立该节点层。因而,如果代表符号“a”的孩子节点402不存在,则它被建立。此时,如果孩子节点402已存在,但没有指向自己的任何其它孩子节点,则新条目“appaloosa”可以作为孩子节点而被***。要想***这个新的节点,则要建立新的节点层408。对于每个新的层都指派一个“逻辑层”,其中,如果为所述关键字中的每个符号都建立了一层,则所述“逻辑层”实际上定义了所述条目在传统的MRT中本应被***的层。这个“逻辑层”被设定为等于正被***的关键字的长度,即,由于在这一层所***的关键字自身具有9个符号,所以新的节点层408相当于逻辑层“9”。因此,对应于所述关键字的第九个符号(即“appaloosa”中结尾的“a”)建立新的节点409,。最后***叶节点406,节点层408中的节点409指向该叶节点406。对节点层404中的节点402中的指针进行调整,以指向节点层408中的节点409。
在图4中图示了上述MRT的实施例,通过本发明的解释性代码实施方案,还可以理解本发明的其它方面:
●建立一个用于存储条目的根节点,即,该根节点可用于存储指向一个或多个孩子节点的指针,其中每一个孩子节点都代表了关键字中的一个符号。从所述根节点开始搜索关键字“k1”的***点。
●将当前节点的逻辑层变量设置为所述根节点。
●开始while循环,即只要当前节点的逻辑层号小于或等于关键字k1的长度,则:
○寻找与关键字k1的第n个符号相对应的条目T1,其中n是所述节点的逻辑层。
○如果当前逻辑层等于关键字k1的长度,则在这一逻辑层中的某个节点处添加关键字k1的条目,然后结束。
●否则,如果当前逻辑层不等于关键字k1的长度,则跳到下一节点层:
○如果下一节点层不存在,则建立新的节点层,并向这个新层指派一个等于关键字k1的长度的逻辑层号,并且在这个逻辑层中的某个节点处***关键字k1的条目,然后结束。
●否则,如果T1所指向的下一节点层存在,则:
○如果下一层的逻辑层号不是比当前层的层号大1(这意味着有些中间节点层已被本发明遗漏了),则将这一层上的任一条目T2与关键字k1做比较,以确定预计在哪一逻辑层上,关键字k1中的符号开始与T2所指向的关键字中的符号不同(换言之,这两个关键字共有哪个(些)起始符号?)
○如果关键字k1的长度正好使得在当前层和具有T2所指向的关键字的层之间,即在现有的层之间需要一个新的逻辑层,则建立新的中间层以***关键字k1,逻辑层号对应于关键字k1和T2所指向的关键字从每个关键字的起始处开始计数的所共有的起始符号的数量。
○在代表关键字k1和T1所指向的关键字所共有的最后一个公共符号的节点处,***一个新指针,其指向T2所指向的关键字所在的层。
●将当前节点增加到下一层。
●结束while循环。
当前节点被增加到下一层之后,如果关键字k1的最后一个符号不是关键字k1和T2所指向的关键字之间的最后一个公共符号,则代码将循环回去,以建立新的节点层,从而在代表关键字k1中最后一个符号的节点处存储关键字k1。
以上的解释性代码实施方案建立了改进型MRT,其使用最少数量的层来存储关键字。当向MRT中添加新的关键字时,所述实施方案或者使用现有的节点层,或者建立最少数量的新节点层,以维护MRT的逻辑结构,其中所有的指针都被准确地维护着。然而,上述代码实施方案只是用于实施本发明的一种示例性代码实施方案。在本发明的精神和范围内还可能存在很多其它的代码变动。
图5示出了用于实现本发明的MRT的示例性方法500的流程图。建立根节点和第一节点层502。沿着一个指针从根节点到达与关键字中第一个符号相对应的节点504。搜索与关键字中第一个符号相对应的节点,以得到指向下一节点层的指针506。估计所述指针的存在性508。如果所述指针不存在,则建立下一节点层,所述关键字的条目被存储在与该关键字的最后一个符号相对应的节点中,并向存储所述关键字的节点层指派一个逻辑层号,其对应于所述关键字中的最后一个符号和/或所述关键字的长度510。如果所述指针存在,则估计所指向的层的逻辑层号512。如果所述指针指向的节点层具有与所述关键字的长度相对应的逻辑层号,则在与所述关键字中最后一个符号相对应的节点处为所述关键字存储一个条目514。如果所述指针所指向的节点层不具有与所述关键字中最后一个符号和/或关键字长度相对应的逻辑层号,则在现有的层之间***新的节点层,在与所述关键字中最后一个符号相对应的节点中存储所述关键字的条目,并向这个层指派一个逻辑层号,其对应于所述关键字的长度516。给出这个示例性的方法只是为了说明本发明。所述方法的各种变化可以包括使用不同于关键字长度的标准来存储关键字。例如,另一种方法可能一直来这样设置改进型MRT,以在根节点和关键字的条目所依附的节点之间产生最短路径。在另一种变化中,所述方法可能基于某个关键字中不同于MRT中已有关键字的最短符号序列来存储关键字。
图6示出了根据本发明的一个方面用于搜索改进型MRT的示例性方法600。搜索根节点以找到指向对应于关键字中第一个符号的节点的指针602。搜索对应于关键字中第一个符号的节点以找到指向下一节点层的指针604。检查下一节点层,以确认指派给它的逻辑层号是否对应于关键字的长度606。如果下一节点层的逻辑层号与关键字长度相匹配,则在这个节点层上搜索关键字的条目608。能否找到该关键字的条目取决于这个MRT中是否存在着条目。如果没有为所述关键字存储任何条目,则搜索返回空结果,然后结束609。如果搜索找到了所述关键字的条目,则搜索也会结束609。如果向下一节点层指派的逻辑层号与对应于关键字长度的逻辑层号并不相同,则搜索当前节点,以找到指向后续的下一节点层的指针610。这个过程将不断重复,直到找到所述关键字条目、不再有指向后续节点层的其他指针、和/或对应于所述关键字中所有符号的节点层都已被搜索612。
图7示出了本发明的MRT的第二实施例700。为了存储关键字“bl”,对根节点701进行搜索以找到指向节点层702的指针,具体地说是要找到对应于符号“b”的节点。如果不存在对应于“b”的节点,则建立与“b”相对应的新节点704。(如果节点704已存在,则搜索这个节点以找到指向下一节点层的指针。)由于所述指针不存在,所以建立新的节点层706(等于2的逻辑层)。在节点层706重复同样的过程,以找到所述关键字的第二个符号,即“l”。建立与“l”相对应的节点708,并且叶节点710依附于节点708,以指向关键字“bl”的条目。
对于关键字“blueberries”而言,搜索对应于符号“b”的节点704,以找到指向下一层的指针。节点704已经有了一个指向下一节点层706的指针,接下来对所述节点层706进行搜索以找到所述关键字的第二个符号“l”。节点708对应于“l”。然后搜索节点708以找到指向下一节点层中任一孩子节点的指针。如果不存在指向下一节点层的指针,则建立下一节点层712,并且建立一个指针。由于“blueberries”的关键字长度是11个符号,所以向新的节点层712指派等于11的逻辑层。在这个新的节点层712,建立与所述关键字的第11个符号,即“blueberries”中最后一个符号“s”相对应的新节点714。最后,叶节点716依附到节点714上,以指向关键字“blueberries”的条目。对与“l”相对应的节点708中的指针进行调整,以指向对应于“s”的节点714。
如上所述,关键字“bl”710和关键字“blueberries”716的条目依附于改进型MRT中相邻的物理层706、712。然而,这些相邻的物理层在逻辑上并不是相邻的。层706被指派给逻辑层2,而层712被指派给逻辑层11。一个新的关键字为了存储在MRT中只需要对应于其关键字长度的那个逻辑层,当这个新的关键字与先前所存储的、在关键字中具有相似起始符号的关键字在长度上相差超过一个符号时,例如“bl”和“blueberries”,才会发生跳越逻辑层的特性。将被添加到改进型MRT中的新关键字可能需要在MRT中两个相邻的现有层之间还不存在的被越过的逻辑层。新的逻辑层必须被***到所述两个相邻的现有层之间,并且必须对这两个相邻的现有层之间的已有指针进行调整,以在将新的逻辑层包括进来的同时保持指针指向的完整性。
根据本发明的层***方面,图7示出了在节点层702和节点层720之间如何***新的逻辑节点层718。关键字“archie”先前已被***到MRT700中,这是通过以下过程实现的:首先在节点层702上建立对应于符号“a”的节点704,所述节点层702相当于逻辑层1,然后建立下一节点层720,并将节点层720指派为逻辑层6。在节点层720中建立节点722以对应于“archie”中最后一个符号“e”,并且用于“archie”的条目724依附到节点722上。在节点层702和节点层720之间的指针从对应于符号“a”的节点702前进到对应于符号“e”的节点722。为了在MRT 700中***新的关键字“arc”,必须在节点层702和节点层720之间***新的逻辑节点层718。
从根节点701出发,到达了节点702,其对应于所要存储的新关键字中的第一个符号“a”,对节点702进行搜索以寻找指针,然后找到了指向下一节点层720的指针726(此时,节点层718还不存在)。确定指针726所指向的节点层720相当于逻辑层6。关键字“arc”将需要其逻辑层为3的节点层。对节点层720进行搜索以寻找关键字条目,结果找到了关键字“archie”的条目724。对于将要***的关键字“arc”和被指到的关键字“archie”,从起始符号开始对它们进行比较,一直顺序地前进到符号开始出现差异为止。将***新的中间逻辑层718,其逻辑层对应于上述两个关键字所共有的符号序列中的最后一个符号。关键字“arc”和关键字“archie”的前三个符号是相同的,因此将***新的逻辑层718,并向其指派一个等于3的逻辑层,其对应于每个关键字中的符号“c”。符号“c”恰好是关键字“arc”的最后一个符号,因此“arc”的条目728将依附在与符号“c”相对应的节点730上。
如果所存储的关键字是“arcus”而不是“arc”,则在节点层718之外,还要增加相当于逻辑层为5的附加节点层,从代表“arcus”和“arc”之间所共有的最后一个符号“c”的节点730指向该附加节点层。代表符号“c”的节点730本应是一个分支点,用于遍历树直到“arcus”和“archie”。但是由于关键字“arc”是以一个到“archie”的路径当中的符号结尾的,所以不需要附加的节点层来存储“arc” (即,以关键字“arc”开始的符号是关键字“archie”中符号的子集)。
接着,对前面的指针726进行调整,以适应新的节点层718。***新的中间节点层718的过程已经在节点702和节点730之间建立了指针732。在节点层718中的节点730和节点层720中的节点722之间建立一个新的指针734。对关键字“archie”的搜索前面已在逻辑层1和6中进行了。在增加了新的逻辑节点层718之后,现在对关键字“archie”的搜索将穿过节点层1、3和6。因此,被具有相似符号的关键字填满的改进型MRT可能具有与传统MRT相接近的结构式样。然而,本发明中稀疏填充的树与稀疏填充的传统MRT相比,相应地更有效率。
图8示出了实现本发明的装置800。接收器802接收关键字,每个关键字都具有一串符号。耦合于接收器802的寄存器804在表示一张表的树形数据结构中将关键字的各个符号存储为多个节点。节点发生器806按照对关键字的条目进行存储的需要,基于关键字中的一个符号将一个节点807添加到树中。用作为存储标准的符号可以是关键字中代表关键字长度的最后一个符号,或者在某种不同的方案中,可以是以下这种符号:当被添加到关键字的在前符号序列(如果有的话)中时,该符号形成了在树上还未存储另一关键字条目的某个节点中存储所述关键字的条目所需的最短符号序列。***器808在节点发生器806所建立的节点807中或者在节点807所指向的存储器空间中为每一个接收到的关键字存储一个条目。
所述装置还可以包括关键字寻找器810,用于遍历树来寻找某个关键字。在一个实施例中,关键字寻找器810沿着指针814到达节点816,该节点816所对应的第一个符号与正被搜索的关键字中的第一个符号相同,从而对所存储的关键字812进行搜索。关键字寻找器810估计节点816的逻辑层号,如果节点816的逻辑层不是正被搜索的关键字的逻辑层,则搜索节点816以找到与正被搜索的所存储关键字812中的下一符号相对应的指针。如果指针818存在,则关键字寻找器810沿着指针818到达下一逻辑层上的后续节点812,并对包含这一节点812的层估计逻辑层号。如果该逻辑层号与所搜索的关键字812的预计逻辑层号相匹配,则在这一层上对与关键字812相关联的条目进行搜索。正被搜索的所存储关键字812被找到。关键字寻找器810重复以上过程,即搜索下一节点层,估计逻辑层号,直到所述关键字的条目被找到、不再有指向下一节点层的指针、或者对应于所述关键字中所有符号的节点层都已被搜索。
在一些装置变动方案中,节点可以是存储器空间,并且关键字可以是该存储器空间中的条目。本发明的装置800可按模块化的方式来理解,这些模块中的一些可用来处理存储器中关键字的接收和***,例如接收器802和***器808,而其它一些模块可用于动态地分配存储器,例如寄存器804和节点发生器806。虽然以“模块”的方式描述了本发明的装置实施例800以便于说明,但是一种或多种电路、组件、寄存器、处理器、软件子例程、对象或它们的组合可用来替换这些模块中的一个、几个或全部。
图9根据本发明的一种可替换实施例示出了一件产品900,其包括提供指令902的机器可读介质,所述指令使得机器实现本发明的MRT和/或一种或多种相关方法。
上面用最基本的形式描述了一些方法和装置,但是在不偏离本发明基本范围的前提下可以做出多种修改。本领域的普通技术人员将会清楚,可以做出很多进一步的修改和调整。所给出的具体实施例不是为了限制本发明,而是为了解释本发明。本发明的范围不由所给出的特定例子来决定,而是由所附的权利要求来决定。
Claims (17)
1.一种方法,包括:
向包括一串符号的关键字中的符号指派逻辑层号;以及
至少部分地基于所述逻辑层号,而不是基于代表所述关键字中每个符号的节点之间的路径,在多路基数树的一个节点层中存储所述关键字的条目。
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所述的方法,还包括如果所述关键字未被找到,则***新的节点层以存储所述关键字,包括:
沿着第一指针从所述根节点到达与所述关键字中的第一个符号相对应的节点;
搜索与所述关键字中第一个符号相对应的节点,以找到指向下一节点层的第二指针;
如果所述第二指针不存在,则建立下一节点层,在与所述关键字中最后一个符号相对应的节点中存储所述关键字的条目,并向存储有所述关键字的节点层指派与所述关键字的长度相对应的逻辑层号;
如果所述第二指针存在并指向了具有与所述关键字的长度相对应的逻辑层号的节点层,则在对应于所述关键字中最后一个符号的节点中存储所述关键字的条目;以及
如果所述第二指针存在并指向了不具有与所述关键字的长度相对应的逻辑层号的节点层,则***新的节点层以存储所述关键字的条目,并根据所述树中从根节点开始的所有节点层的逻辑层号的大小升序来***该新层。
12.一种装置,包括:
寄存器,用于在代表一张表的树形数据结构中存储具有一串符号的关键字的条目;和
节点发生器,用于向所述树中添加节点,以基于所述关键字的最后一个符号来存储所述关键字条目,其中所述节点被分配了与所述关键字的长度相对应的逻辑层号;并且
其中,寻找所述关键字时所使用的是存储所述关键字的节点的逻辑层号,而不是与所述关键字中每个符号相对应的节点之间的路径。
13.如权利要求12所述的装置,还包括:
接收器,用于接收关键字;和
***器,用于为每个将被存储到由所述节点发生器建立的节点中的关键字***条目。
14.如权利要求12所述的装置,还包括:寻找器,用于
沿着一个指针到达与正被搜索的关键字的第一个符号相对应的节点;
搜索与所述关键字的第一个符号相对应的节点,以找到指向具有正被搜索的关键字的逻辑层号的节点层的指针;以及在具有正被搜索的关键字的逻辑层号的节点层上搜索所述关键字的条目。
15.一件产品,包括:
包括指令的机器可读介质,所述指令在被执行时使得机器:
生成用于在存储器中存储关键字的树,所述树具有根节点,每个关键字具有一串符号;
接收一个具有条目的关键字,所述条目将被存储在所述树的某个节点中;以及
在被指派了与所述关键字的长度相对应的逻辑层号的节点层中,在与所述关键字中最后一个符号相对应的节点中存储所述关键字的条目。
16.如权利要求15所述的产品,还包括以下指令,这些指令在被执行时使得机器:
a)通过确定与具有一串n个符号的关键字的长度相对应的逻辑层号,在被构建为多节点的树、由已存储的关键字条目组成的表中搜索所述关键字的条目;
b)搜索所述树中的根节点,以找到指向与所述关键字中第一个符号相对应的节点的指针;
c)搜索与所述关键字中第一个符号相对应的节点,以找到指向下一节点层的指针;
d)确定所述下一节点层是否被指派了与所述关键字的长度相对应的逻辑层号;
e)如果向所述下一节点层指派了所述逻辑层号,则在所述下一节点层中搜索所述关键字的条目;
f)如果未向所述下一节点层指派与所述关键字的长度相对应的逻辑层号,则搜索指向后续的下一节点层的指针;以及
g)重复d-f步骤,直到发现了关键字条目之一、不再有指向后续节点层的指针、以及与所述关键字中的所有符号相对应的节点层都已被搜索。
17.如权利要求15所述的产品,还包括以下指令,这些指令在被执行时使得机器:
沿着第一指针从所述根节点到达与所述关键字中的第一个符号相对应的节点;
搜索与所述关键字中第一个符号相对应的节点,以找到指向下一节点层的第二指针;
如果所述第二指针不存在,则建立下一节点层,在与所述关键字中最后一个符号相对应的节点中存储所述关键字的条目,并向存储有所述关键字的节点层指派与所述关键字的长度相对应的逻辑层号;
如果所述第二指针存在并指向了具有与所述关键字的长度相对应的逻辑层号的节点层,则在对应于所述关键字中最后一个符号的节点中存储所述关键字的条目;以及
如果所述第二指针存在并指向了不具有与所述关键字的长度相对应的逻辑层号的节点层,则***新的节点层以存储所述关键字的条目,并根据所述树中从根节点开始的所有节点层的逻辑层号的大小升序来***新层。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/043,764 US7062499B2 (en) | 2002-01-08 | 2002-01-08 | Enhanced multiway radix tree and related methods |
US10/043,764 | 2002-01-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1613073A true CN1613073A (zh) | 2005-05-04 |
CN100377154C CN100377154C (zh) | 2008-03-26 |
Family
ID=21928762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB038020246A Expired - Fee Related CN100377154C (zh) | 2002-01-08 | 2003-01-03 | 改进型多路基数树 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7062499B2 (zh) |
EP (1) | EP1466277A2 (zh) |
CN (1) | CN100377154C (zh) |
AU (1) | AU2003235727A1 (zh) |
TW (1) | TWI250424B (zh) |
WO (1) | WO2003058512A2 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7028042B2 (en) * | 2002-05-03 | 2006-04-11 | Jorma Rissanen | Lossless data compression system |
FR2866735B1 (fr) * | 2003-09-22 | 2008-06-27 | Kode | Procede d'organisation d'une base de donnees |
US8180802B2 (en) * | 2003-09-30 | 2012-05-15 | International Business Machines Corporation | Extensible decimal identification system for ordered nodes |
US7370058B2 (en) * | 2003-10-28 | 2008-05-06 | International Business Machines Corporation | Algorithm for sorting bit sequences in linear complexity |
US7467138B2 (en) * | 2003-10-28 | 2008-12-16 | International Business Machines Corporation | Algorithm for sorting bit sequences in linear complexity |
US20060004791A1 (en) * | 2004-06-21 | 2006-01-05 | Kleewein James C | Use of pseudo keys in node ID range based storage architecture |
US8886677B1 (en) | 2004-07-23 | 2014-11-11 | Netlogic Microsystems, Inc. | Integrated search engine devices that support LPM search operations using span prefix masks that encode key prefix length |
US7747599B1 (en) | 2004-07-23 | 2010-06-29 | Netlogic Microsystems, Inc. | Integrated search engine devices that utilize hierarchical memories containing b-trees and span prefix masks to support longest prefix match search operations |
US7953721B1 (en) | 2006-11-27 | 2011-05-31 | Netlogic Microsystems, Inc. | Integrated search engine devices that support database key dumping and methods of operating same |
US7831626B1 (en) | 2006-11-27 | 2010-11-09 | Netlogic Microsystems, Inc. | Integrated search engine devices having a plurality of multi-way trees of search keys therein that share a common root node |
US7987205B1 (en) | 2006-11-27 | 2011-07-26 | Netlogic Microsystems, Inc. | Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations |
US8086641B1 (en) | 2006-11-27 | 2011-12-27 | Netlogic Microsystems, Inc. | Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same |
US8094157B1 (en) * | 2007-08-09 | 2012-01-10 | Nvidia Corporation | Performing an occurence count of radices |
US20090138500A1 (en) * | 2007-10-12 | 2009-05-28 | Yuan Zhiqiang | Method of compact display combined with property-table-view for a complex relational data structure |
US7788268B2 (en) * | 2008-01-08 | 2010-08-31 | International Business Machines Corporation | In-place sorting using node specific mask width |
US8095548B2 (en) | 2008-10-14 | 2012-01-10 | Saudi Arabian Oil Company | Methods, program product, and system of data management having container approximation indexing |
TWI483138B (zh) * | 2012-10-12 | 2015-05-01 | Acer Inc | 遠端動態資料的處理與驗證方法、系統,以及電腦可讀記錄媒體 |
US11068620B2 (en) | 2012-11-09 | 2021-07-20 | Crossbar, Inc. | Secure circuit integrated with memory layer |
US9823896B2 (en) * | 2014-01-29 | 2017-11-21 | International Business Machines Corporation | Parallelized in-place radix sorting |
US9824111B2 (en) * | 2014-01-29 | 2017-11-21 | International Business Machines Corporation | Parallelized in-place radix sorting |
US9396286B2 (en) | 2014-05-07 | 2016-07-19 | Red Hat Israel, Ltd. | Lookup with key sequence skip for radix trees |
CN105830041B (zh) * | 2014-11-27 | 2019-06-18 | 华为技术有限公司 | 元数据的恢复方法及装置 |
US9946512B2 (en) * | 2015-09-25 | 2018-04-17 | International Business Machines Corporation | Adaptive radix external in-place radix sort |
US10067966B2 (en) * | 2015-09-29 | 2018-09-04 | Vmware, Inc. | Leveraging hierarchy in a tree data structure to dynamically allocate keys |
US10262016B2 (en) | 2015-09-29 | 2019-04-16 | Vmware, Inc. | Tuning key space at the time of instantiation of a tree data structure |
US11829398B2 (en) * | 2020-04-10 | 2023-11-28 | Salesforce, Inc. | Three-dimensional probabilistic data structure |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5202986A (en) * | 1989-09-28 | 1993-04-13 | Bull Hn Information Systems Inc. | Prefix search tree partial key branching |
US5095458A (en) * | 1990-04-02 | 1992-03-10 | Advanced Micro Devices, Inc. | Radix 4 carry lookahead tree and redundant cell therefor |
US5546390A (en) * | 1994-12-29 | 1996-08-13 | Storage Technology Corporation | Method and apparatus for radix decision packet processing |
US5873078A (en) * | 1996-07-19 | 1999-02-16 | Bay Networks, Inc. | Radix tree search logic |
US5857196A (en) * | 1996-07-19 | 1999-01-05 | Bay Networks, Inc. | Method for storing a tree of potential keys in a sparse table |
SE510000C2 (sv) * | 1997-07-21 | 1999-03-29 | Ericsson Telefon Ab L M | Struktur vid databas |
US6396842B1 (en) * | 1998-04-30 | 2002-05-28 | 3Com Corporation | Method of searching using longest match based Randix Search Trie with variable length keys and having prefix capability |
US6298340B1 (en) * | 1999-05-14 | 2001-10-02 | International Business Machines Corporation | System and method and computer program for filtering using tree structure |
-
2002
- 2002-01-08 US US10/043,764 patent/US7062499B2/en not_active Expired - Fee Related
-
2003
- 2003-01-03 EP EP03729337A patent/EP1466277A2/en not_active Withdrawn
- 2003-01-03 CN CNB038020246A patent/CN100377154C/zh not_active Expired - Fee Related
- 2003-01-03 AU AU2003235727A patent/AU2003235727A1/en not_active Abandoned
- 2003-01-03 WO PCT/US2003/000231 patent/WO2003058512A2/en not_active Application Discontinuation
- 2003-01-07 TW TW092100241A patent/TWI250424B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
EP1466277A2 (en) | 2004-10-13 |
WO2003058512A2 (en) | 2003-07-17 |
US20030130981A1 (en) | 2003-07-10 |
TWI250424B (en) | 2006-03-01 |
TW200401206A (en) | 2004-01-16 |
AU2003235727A1 (en) | 2003-07-24 |
US7062499B2 (en) | 2006-06-13 |
CN100377154C (zh) | 2008-03-26 |
WO2003058512A3 (en) | 2004-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100377154C (zh) | 改进型多路基数树 | |
US8332410B2 (en) | Bit string merge sort device, method, and program | |
EP2069979B1 (en) | Dynamic fragment mapping | |
EP1393206B1 (en) | Data structure for information systems | |
CN107862026B (zh) | 数据存储方法及装置、数据查询方法及装置、电子设备 | |
JP3318834B2 (ja) | データファイルシステム及びデータ検索方法 | |
JPH06103497B2 (ja) | レコード検索方法及びデータベース・システム | |
US8386526B2 (en) | Coupled node tree backup/restore apparatus, backup/restore method, and program | |
CN103765381B (zh) | 对b+树的并行操作 | |
CN105335481B (zh) | 一种大规模字符串文本的后缀索引构造方法及装置 | |
US4941124A (en) | Text comparator with counter shift register | |
CN108509505A (zh) | 一种基于分区双数组Trie的字符串检索方法及装置 | |
KR100999408B1 (ko) | 해시트리를 이용한 url 검색방법 | |
JP3691018B2 (ja) | 最長一致検索回路および方法およびプログラムおよび記録媒体 | |
EP0099404A1 (en) | TEXT COMPARATOR. | |
CN105302838A (zh) | 分类方法、查找方法和设备 | |
US7933885B1 (en) | Longest matching prefix search engine with hierarchical decoders | |
US6611894B1 (en) | Data retrieval apparatus | |
US20040044683A1 (en) | Data compiling method | |
US11822530B2 (en) | Augmentation to the succinct trie for multi-segment keys | |
JP3534471B2 (ja) | マージソート方法及びマージソート装置 | |
JPH10240741A (ja) | 木構造型データの管理方法 | |
US8849866B2 (en) | Method and computer program product for creating ordered data structure | |
Chaitanya | Binary Search Sort Algorithm-Yet Another Sorting Algorithm with Binary Search having O (nlogn) and O (n) time complexity | |
JP2001134594A (ja) | 類似特徴量の検索方法,その検索装置およびその検索プログラム記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080326 Termination date: 20180103 |
|
CF01 | Termination of patent right due to non-payment of annual fee |