CN105074689A - 编索引成形图创建 - Google Patents
编索引成形图创建 Download PDFInfo
- Publication number
- CN105074689A CN105074689A CN201380075352.7A CN201380075352A CN105074689A CN 105074689 A CN105074689 A CN 105074689A CN 201380075352 A CN201380075352 A CN 201380075352A CN 105074689 A CN105074689 A CN 105074689A
- Authority
- CN
- China
- Prior art keywords
- node
- bit string
- shaping
- binary tree
- index
- 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.)
- Pending
Links
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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
索引成形图创建可以通过通信链路接收多个位串。索引成形图创建可以根据表示多个位串的多个节点创建二叉树。索引成形图创建可以基于包括多个位串和针对多个位串的多个索引的二叉树定义索引表。索引成形图创建可以基于二叉树创建成形图,其中成形图压缩多个节点的一部分。索引成形图创建可以通过向在成形图中的压缩数量的节点中的每个分派可以与在索引表中的多个索引相关联的偏移值来将成形图转换成编索引的成形图。
Description
背景技术
数据结构可以包括多个字符的表示。可以遍历(traverse)数据结构来提取多个字符。数据结构可能需要与多个字符的编索引和查找相关联的存储器资源和处理资源。
二叉树可以是存储多个字符的数据结构,使得二叉树可以被遍历以检索字符的串。然而,随着存储在二叉树中的字符的串的大小增加,用于存储字符的串的存储器分配也增加。减少被分配以存储二叉树中的信息的存储器而不丢失信息可以提供比二叉树更有效率的数据结构。
附图说明
图1A是图示了根据本公开的位串列表的示例的图。
图1B是图示了根据本公开的二叉树的示例的图。
图1C是图示了根据本公开的编索引的成形图(indexedshapedgraph)的示例的图。
图2A是图示了根据本公开的位串列表的示例的图。
图2B是图示了根据本公开的包括公共前缀的二叉树的示例的图。
图2C是图示了根据本公开的包括公共前缀的编索引的成形图的示例的图。
图3A是图示了根据本公开的切分标记(token)列表的示例的图。
图3B是图示了根据本公开的切分压缩的示例的图。
图4是图示了根据本公开的查询查找的示例的流程图。
图5是图示了根据本公开的用于编索引的成形图创建的方法的示例的流程图。
图6是图示了根据本公开的计算系统的示例的图。
具体实施方式
数据结构的使用可以与存储器资源和处理资源相关联。例如,数据结构可以存在于存储器中并且由数据结构占用的存储器的量可以与同数据结构相关联的数据的类型和/或信息的大小成比例。处理资源可以基于从数据结构检索信息所需的处理资源而与数据结构相关联。减少构造数据结构和从数据结构检索信息需要的存储器资源和处理资源的大小可以影响数据结构的效率并且可以提供同与存储器资源和/或处理资源的较大使用相关联的数据结构相比更好的替代方案。
如本文使用的那样,数据结构可以是在存储器中的信息的组织。可以通过用于存储信息的组织方案来区分数据结构。信息可以指除其他数据类型之外的串和/或整数,例如文本和/或数字。可以将信息以标记的形式存储在数据结构中。可以将信息划分成标记,例如标记化(tokenize),使得多个标记与多个字符相关联。例如,可以将串“abc”标记化成表示字符“a”的第一标记、表示字符“b”的第二标记以及表示字母“c”的第三标记。可以将标记存储在数据结构中。
在先前的方法中,可以使用例如数据结构的二叉树来存储标记的多个列表,例如信息。然而,可以通过使形状与二叉树相关联并且浓缩具有相似形状的二叉树的部分以创建成形图来减少与在二叉树中存储标记的多个列表相关联的存储器资源和处理资源。成形图可以被编索引以适应在成形图上的查找能力。当为成形图编索引时创建了编索引的成形图。
在本公开中,参考形成本文的一部分的附图,并且其中通过图示的方式示出可以如何实行本公开的多个示例。以足够的细节描述了这些示例以使本领域普通技术人员能够实行该公开的示例,并且应理解可以使用其他示例并且可以做出过程、电和/或结构改变而不脱离本公开的范围。
本文的图遵循编号约定,其中第一个数字对应于绘图编号并且剩余的数字标识图中的元素或者部件。可以添加、交换和/或消除在本文的各种图中示出的元素从而提供本公开的多个附加示例。此外,在图中提供的元素的比例和相对比例意图图示本公开的示例,并且不应该被在限制性的意义上理解。
图1A是图示了根据本公开的位串列表102的示例的图。位串列表102包括具有相关联的位串标识(ID)“P1”的第一位串“0”、具有相关联的位串ID“P2”的第二位串“001”、具有相关联的位串ID“P3”的第三位串“010”、具有相关联的位串ID“P4”的第四位串“101”以及具有相关联的位串ID“P5”的第五位串“110”。
如本文使用的那样,位串可以表示二进制形式的信息。例如,二进制“0”可以表示十进制数字0、二进制“001”可以表示十进制数字1、二进制“010”可以表示十进制数字2、二进制“101”可以表示十进制数字5,并且二进制“110”可以表示十进制数字6。可以标记化位串使得在位串中每个字符,例如“0”或者“1”与标记相关联。标记的列表可以表示位串。例如,二进制“101”可以由表示“1”的第一标记、表示“0”的第二标记和表示“1”的第三标记表示。第一标记、第二标记和第三标记可以组成表示二进制“101”的标记的列表。
如本文使用的那样,标记可以是表示除其他文本符号之外的例如“0”和/或“1”的二进制字符和/或例如“a”、“b”和/或“c”的文本字符的对象。可以使用多个指针将标记链接在一起来创建标记的列表。在多个示例中,位串列表可以将位串中的每个定义为单独的字符的列表和/或定义为标记的列表。如本文使用的那样,可交换地使用标记列表和位串列表并且同样地也可交换地使用标记和位。
图1B是图示了根据本公开的二叉树的示例的图。图1B包括二叉树104-1,二叉树104-2,多个节点106-1、106-2、106-3、106-4、106-5、106-6、106-7、106-8、106-9、106-10和106-11,例如一般被称为节点106。二叉树104-2是具有多个相关联的形状ID的二叉树104-1的表示。
如本文使用的那样,二叉树是有序的树数据结构。在多个示例中,二叉树可以是除其他类型的二叉树结构之外的二叉单词查找树(trie)。二叉树可以包括定义存储在二叉树中的标记的多个列表的多个节点,例如对象。二叉单词查找树可以是二叉树,其中没有单个节点定义标记的列表而是在二叉树内的节点和将该节点连接到二叉树的根节点,例如从节点到根节点的路径,的多个其他节点的位置可以定义标记的列表。
多个节点106可以由边连接。连接多个节点的边122-1、122-2、122-3、122-4、122-5、122-6、122-7、122-8、122-9、122-10,例如一般被称为边122,可以与例如“1”和/或“0”的二进制字符相关联。在多个示例中,边可以与除其他类型的字符之外的文本字符相关联。在二叉树中,每个节点与例如“1”的右边和例如“0”的左边相关联。例如,可以将根节点106-1通过例如“0”的边122-1连接到节点106-2,并且通过例如“1”的边122-2连接到节点106-3。可以使节点106-2通过例如“0”的边122-3与节点106-4相关联,并且通过例如“1”的边122-4与节点106-5相关联。可以使节点106-3通过例如“0”的边122-5与节点106-6相关联,并且通过例如“1”的边122-6与节点106-7相关联。可以将节点106-4通过例如“1”的边122-7连接到节点106-8。可以将节点106-5通过例如“0”的边122-8连接到节点106-9。可以将节点106-6通过例如“1”的边122-9连接到节点106-10。可以将节点106-7通过例如“0”的边122-10连接到节点106-11。
在图1A中标识的位串中的每个可以与在二叉树104-1和二叉树104-2中的多个节点相关联。例如,具有“0”值的位串可以与节点106-1和106-2相关联。即,从根节点开始,路径可以沿着从节点106-1通过边122-1到节点106-2,其中具有值“0”的位串终止。节点106-2可以通过节点106-2的阴影(shading)表示位串在节点106-2处终止。节点106-2可以利用标志和/或变量表示在节点106-2处位串的终止,所述标志和/或变量可以被触发以指示在节点106-2处位串的终止。如本文使用的那样,如果位串在节点处终止,则节点可以是有效的。在多个示例中,尽管节点106-2可以与位串值“0”相关联,但是节点106-2不保持值“0”。在图1中的位串“001”可以与节点106-1、106-2、106-4和106-8相关联。节点106-8的阴影可以表示位串在节点106-8处终止。
组成二叉树104-1的节点106和边122可以位于存储器中。即,与二叉树104-1相关联的十一个节点可以位于存储器中。为了减少与构建二叉树和存储在图1A中的位串相关联的存储器资源,可以减少表示位串需要的多个节点。
与存储位串相关联的节点的减少可以开始于压缩二叉树104-1中的节点106的一部分。如本文使用的那样,多个节点的压缩可以包括将多个节点表示为单个节点,使得仅一个节点与多个节点相关联。
压缩过程可以开始于使形状与节点中的每个相关联并且向每个形状分派形状ID。压缩过程在二叉树中的叶节点处开始。叶节点表示不具有相关联的孩子节点的节点。节点的形状可以由左子节点的形状、右子节点的形状和节点的有效性定义,所述节点的有效性例如位串是否在节点处结束。左子节点的形状、右子节点的形状和节点的有效性可以被称为三元组并且可以被表示为“<左子节点形状,右子节点形状,有效性标志>”。在二叉树104-2中的每个节点的形状ID由在每个节点内的数字指示。如本文使用的那样,当从根节点到最后的节点的路径表示位串时,位串在节点处结束。
例如,因为节点106-8不具有相关联的右子节点和相关联的左子节点并且因为节点106-8是有效节点,所以节点106-8的形状可以由三元组“<,,有效>”定义。可以向形状“<,,有效>”分派1的形状ID。形状ID可以与给定的节点相关联。例如,节点106-8可以与形状ID1相关联。因为节点106-9、106-10和106-11具有由三元组“<,,有效>”定义的相关联的形状,所以节点106-9、106-10和106-11可以与形状ID1相关联。将共享形状ID的节点压缩成单个节点。
因为节点106-4不具有相关联的左子节点、因为右子节点具有由节点id1定义的形状,并且因为节点106-4不是有效节点,例如位串不在节点106-4处结束,所以节点106-4的形状可以由三元组“<,1,无效>”定义。形状“<,1,无效>”可以与形状ID2相关联。节点106-6的形状也可以与形状ID2相关联。
节点106-5、106-7的形状可以由可以与形状ID3相关联的三元组“<1,,无效>”定义。因为例如节点106-4的左子节点具有相关联的形状ID2、因为例如节点106-5的右子节点具有相关联的形状ID3,并且因为节点106-2是有效节点,所以节点106-2的形状可以由三元组“<2,3,有效>”定义。节点106-3的形状可以由三元组“<2,3,无效>”定义并且可以与形状ID5相关联。节点106-1的形状可以由三元组“<4,5,无效>”定义并且可以与形状ID6相关联。可是使用节点106、形状ID和边122来创建成形图。
图1C是图示了根据本公开的编索引的成形图的示例的图。图1C包括成形图108、编索引成的形图110和索引表114。
如本文使用的那样,可以基于在图1B中的二叉树104-2来创建,例如构成,成形图108和编索引的成形图110。成形图108和编索引的成形图110可以包括可以导向的多个边,例如边可以具有相关联的方向,所述方向在根压缩节点处开始并且在叶压缩节点处结束。成形图108和编索引的成形图110包括多个压缩节点112-1、112-2、112-3、112-4、112-5和112-6,例如一般被称为压缩节点112。
可以基于在图1B中的节点106创建压缩节点112。例如,压缩节点112-1可以与在图1B中的节点106-1相关联。压缩节点112-2可以与在图1B中的节点106-2相关联。压缩节点112-3可以与在图1B中的节点106-3相关联。压缩节点112-4可以与在图1B中的节点106-4和106-6相关联。即,可以将在图1B中的节点106-4和106-6压缩成单个节点以创建压缩节点112-4。因为在图1中的节点106-4和106-6共享相同的形状ID,例如形状ID2,所以可以压缩节点。压缩节点112-5可以与在图1B中的节点106-5和106-7相关联。压缩节点112-6可以与在图1B中的节点106-8、106-9、106-10和106-11相关联。
因为二叉树104-2包括比成形图108更多的节点和编索引的成形图110更多的节点,所以成形图108和编索引的成形图110可以比在图1B中的二叉树104-2更有效地存储位串。
在成形图108和编索引的成形图110中,可以使多个压缩节点变暗,例如遮蔽,来表示位串的结束。例如,位串“0”可以在压缩节点112-2处结束。成形图108和编索引的成形图110可以包括在图1A中的多个位串的表示。偏移值可以与在编索引的成形图110中的压缩节点112中的每个相关联。可以使用偏移值使压缩节点与多个位串相关联,其中从根压缩节点到压缩节点的路径可以是与多个位串相关联的公共前缀。在编索引的成形图110中,偏移值可以由在压缩节点112中的每个内的字符“-”右边的数字指示。与在编索引的成形图110中的节点中的每个相关联的形状ID由在压缩节点112中的每个中的字符“-”左边的数字指示。在成形图108中,形状ID由在压缩节点112中的每个中的数字指示。可以对多个位串编索引以减少从编索引的成形图110检索位串并且标识与公共前缀相关联的多个位串需要的处理资源。将在图2A中进一步讨论公共前缀。
编索引的成形图110可以包括压缩节点112和它们的相关联的边。编索引的成形图110可以进一步包括针对压缩节点112中的每个的偏移值。偏移值可以表示在与相应的节点,例如公共前缀,相关联的子路径中的任何一个中结束的多个位串。使用的关联的类型可以指定如何从编索引的成形图110检索位串。例如,偏移值可以表示在左子图中的多个节点处结束的位串的数量。左子图可以和与边相关联的给定值相关。例如,表示跟随具有“0”值的位的路径的边可以是在确定左子图中使用的左路径。
因为压缩节点112-6不具有相关联的左子图,所以压缩节点112-6可以具有偏移值“0”。压缩节点112-4可以具有“0”值的偏移值,因为压缩节点112-4不具有相关联的左子图,例如从表示具有“0”值的位的边分支的子图,即使该压缩节点具有相关联的右子图,例如节点112-6。压缩节点112-2可以具有偏移值“1”,因为压缩节点112-2与左子图相关联,例如压缩节点112-4和112-6,其包括位串在其处终止的单个节点,例如位串“001”在节点112-6处终止。压缩节点112-3可以具有偏移值“1”,因为压缩节点112-3与左子图相关联,例如压缩节点112-4和112-6,其包括位串在其处终止的单个节点,例如位串“101”在节点112-6处终止。压缩节点112-1可以具有偏移值“3”,因为压缩节点112-1与左子图相关联,例如压缩节点112-2、112-4、112-5和112-6,其包括在其处位串终止的三个节点,例如位串“0”在节点112-2处终止、位串“001”在节点112-6处终止并且位串“010”在节点112-6处终止。
索引表114可以与编索引的成形图110相关联。可以使用索引表114和编索引的成形图110来从编索引的成形图110检索位串。索引表114可以包括多个位串ID和多个相关联的索引。例如,索引表114可以包括位串ID“P2”和相关联的索引“0”、位串ID“P1”和相关联的索引“1”、位串ID“P3”和相关联的索引“2”、位串ID“P4”和相关联的索引“3”以及位串ID“P5”和相关联的索引“4”。
可以基于在图1B中的二叉树104-2中的有效节点的遍历分派与位串ID相关联的索引。例如,在图1B中的节点106-8可以是被首先遍历的有效节点并且因此在节点106-8处终止的例如001的位串可以被分派索引“0”。在图1B中的节点106-2可以是被其次遍历的有效节点并且因此在节点106-2处终止的例如0的位串可以被分派索引“1”。
在多个示例中,位串ID的分派可以与在编索引的成形图110中的有效节点的遍历对应。可以使用索引成形图和/或在图1B中的二叉树104-2的多个不同的遍历。例如,可以使用在图1B中的二叉树104-2的按次序的遍历。
图2A是图示了根据本公开的位串列表的示例的图。位串列表202可以包括多个位串,其中位串中的一部分共享公共前缀。例如,位串列表202可以包括具有“10001”值的第一位串和具有“10010”值的第二位串。公共前缀是两个不同的位串之间公共的多个位,例如字符。例如,第一位串可以拥有具有值“00”的公共前缀,例如“10001”并且第二位串可以拥有相同的具有值“00”的相同公共前缀例,如“10010”。在多个示例中,位串必须在位串内的相同位置中具有相同的位以具有公共前缀。
图2B是图示了根据本公开的包括公共前缀的二叉树的示例的图。图2B包括二叉树204-1,二叉树204-2,多个节点206-1、206-2、206-3、206-4、206-5、206-6、206-7、206-8、206-9、206-10、206-11、206-12和206-13,例如一般被称为节点206。
具有“00”值的、在图2A中定义的公共前缀可以在二叉树204-1中由节点206-6和206-9表示。因为在节点206-3和206-6之间的边可以表示具有“0”值的字符并且因为在节点206-6和206-9之间的边还可以表示具有“0”值的字符,所以节点206-6和206-9可以表示公共前缀。因为节点206-6和206-9表示没有多个分支的路径,所以节点206-6和206-9也可以表示公共前缀。可以将节点206-6和206-9紧凑成表示在二叉树204-2中的公共前缀220的单个节点,例如紧凑二叉树。在二叉树204-1中的节点206-6和206-9可以由在二叉树204-2中的节点206-3表示。
可以向在二叉树204-2中的节点206中的每个分派基于三元组“<左子节点形状,右子节点形状,有效性标志>”的形状ID。在多个示例中,节点的形状可以包括相关联的公共前缀的描述,使得形状ID可以基于四元组“<左子节点形状,右子节点形状,有效性标志,公共前缀标志>”。公共前缀标志可以由公共前缀的值定义,例如具有“00”值的公共前缀220。
图2C是图示了根据本公开的包括公共前缀的编索引的成形图的示例的图。图2C包括编索引的成形图210,其由多个紧凑节点212-1、212-2、212-3、212-4、212-5和212-6组成,例如一般被称为紧凑节点212。
可以基于在图2B中的二叉树204-2创建成形图(未示出)。可以基于成形图创建编索引的成形图210。成形图和编索引的成形图210可以包括图2B中的节点206-3的表示。例如,紧凑节点212-3可以与在图2B中的节点206-3相关联。紧凑节点212-3可以与具有“00”值的公共前缀220相关联。
图3A是图示了根据本公开的切分标记列表的示例的图。图3A包括标记列表332、子标记列表334-1和子标记列表334-2。
标记列表332可以包括具有标记ID“P1”的标记“ab”、具有标记ID“P2”的标记“abc”、具有标记ID“P3”的标记“abd”、具有标记ID“P4”的标记“ac”、具有标记ID“P5”的标记“ba”。可以将标记列表332划分成两个子标记列表。标记ID可以是可以与标记的列表相关联的标识。
子标记列表334-1可以包括与标记“ab”相关联的标记“b”、与标记“abc”相关联的标记“bc”、与标记“abd”相关联的标记“bd”以及与标记“ac”相关联的标记“c”。可以基于前缀从标记列表332划分子标记列表334-1。例如,在标记列表334-1中的所有标记具有公共前缀,例如“a”。因为子标记列表334-2不具有公共前缀“a”而是可以与前缀“b”相关联,所以可以将子标记列表334-2与子标记列表334-1分离。子标记列表334-2可以包括与标记“ba”相关联的标记“a”。
可以将标记列表332划分成子标记列表334-1和334-1以减少存储器资源。根据标记列表332创建的编索引的成形图可以使用比根据子标记列表334-1和334-2创建的编索引的成形图更多的存储器资源。划分标记列表利用节点移除了表示与子标记列表334-1和334-2中的每个相关联的公共前缀的需要并且因此减少相关联的编索引的成形图需要的存储器资源。
可以将在子标记列表334-1和334-2中的标记转换成位串。例如,可以将与前缀“a”相关联的标记转换成位串“01100001”或者表示位串“01100001”的位串的列表。可以将与前缀“a”相关联的标记转换成位串“01100001”。可以使用表示子标记列表的位串来创建二叉树。
图3B是图示了根据本公开的切分压缩的示例的图。图3B包括二叉树304-1、二叉树304-2以及成形图308。可以基于在图3A中的子标记列表334-1和子标记列表334-2分别创建二叉树304-1和二叉树304-2。
与子标记列表334-1相关联的二叉树304-1可以包括节点306-1、306-2、306-3、306-4、306-5和306-6,例如一般被称为节点306。节点306-1可以与具有值“0110001”的公共前缀320-1相关联。公共前缀320-1可以从在图3A中的标记“b”、“bc”、“bd”和“c”导出。例如,标记“b”可以具有“01100010”的位串表示并且标记“c”可以具有“01100011”的位串表示。标记“b”和“c”两者可以共享公共前缀“0110001”。节点306-4可以共享具有“1100”值的公共前缀320-2,其中公共前缀320-2分别与在图3A中的子标记列表334-1中的标记“bc”和“bd”中的标记“c”和“d”相关联。与子标记列表334-2相关联的二叉树304-2可以包括节点306-7和306-8。
可以根据二叉树304-1和二叉树304-2创建成形图308。成形图308可以包括压缩节点312-1、312-2、312-3、312-4和312-5。压缩节点312-1、312-2、312-3、312-4可以与二叉树304-1相关联。压缩节点312-5和312-4可以与二叉树304-2相关联。当在成形图中的压缩节点共享相同的形状ID时,可以组合与二叉树304-1相关联的形状图和与二叉树304-2相关联的成形图。例如,在二叉树304-1中的节点306-5和306-6与在二叉树304-2中的节点306-8可以具有相同的形状ID,例如形状ID1。可以在表示节点306-5、306-6和306-8的紧凑节点312-4处组合两个成形图以创建成形图308。
在多个示例中,可以根据成形图308创建编索引的成形图(未示出)。可以根据编索引的成形图和/或二叉树304-1和/或304-2创建索引表(未示出)。
图4是图示了根据本公开的查询查找的示例的流程图。查询可以是位串。查询可以由用户提供。例如,用户可以提供文本“ab”和/或数字“1”。可以将文本和/或数字转换成位串。位串、文本和/或数字可以是前缀。
可以进行查询来标识来自存储在编索引的成形图中的多个位串的哪些位串包括提供的前缀。例如,用户可以提供前缀,例如查询前缀,“0110”。可以确定多个位串包括查询前缀“011”。例如,位串“01100001”、“01100010”和“01100011”可以包括查询前缀“0110”。
例如当用户将文本输入到浏览器中的地址栏中时,查找共享前缀的位串的能力可以是有用的。存储在编索引的成形图中的多个位串可以是用户在过去已经输入到地址栏中的多个地址。用户可以输入文本的几个字符并且地址栏可以提供在过去已经输入的文本的多个列表,其中文本的列表包括作为前缀的文本的几个字符。
在442处,位串的一部分可以与根节点相关联。例如,如果查询前缀具有“ab”值、如果查询前缀的位串表示是“0110000101100010”,并且如果与在图3B中的成形图308相关联的编索引的成形图是在其上我们执行查询的数据结构,那么根节点312-1可以与在查询前缀“0110000101100010”中的位“0110001”相关联,其中位“0110001”表示查询前缀的第九个位置到第十五个位置。可以使用i变量描述在位串上的位置。例如,具有等于1的值的i变量可以描述在前缀0110000101100010”上的第一位置,其中与第一位置相关联的位是“0”,例如“0110000101100010”。
在444处,设置多个变量。可以通过以下设置i变量的值:
其中x是与编索引的成形图的根节点相关联的前缀的位置并且其中将i设置成。将索引变量设置成:
索引=开始偏移量
其中开始偏移量是与索引表相关联的第一索引。通过引用索引表,可以使用索引变量来将索引与位串ID相关联。将位串计数器变量设置成:
位串计数器=子标记列表的大小
其中子标记列表的大小包括在编索引的成形图中的有效节点,例如有效压缩节点,的数量。将形状变量设置成:
形状=根形状id
其中根形状ID是与根节点相关联的形状ID。例如,在图3B中的节点312可以拥有具有“4”值的形状ID。
在446处,获得查询前缀的i位。如果查询前缀具有“010”值并且如果i等于1,那么在i位置处从查询前缀获得的位是“0”位。在448处,确定i位是否等于“1”。如果查询前缀是“010”并且如果i位置具有值或1,那么因为第一位是“0”,所以第一位不等于“1”。
在452处,将位串计数器设置成与具有等于形状变量的形状ID的压缩节点相关联的偏移值。例如,如果形状是例如描述压缩节点的形状ID的“6”,并且如果数据结构是在图1C中的编索引的成形图110,那么因为在图1C中的压缩节点112-1与偏移值“3”相关联,所以位串计数器将等于“3”。即,根节点将在与“0”相关联的边之后并且在左子图中存在三个有效节点,例如与和“0”相关联的边相关联的路径。
在450处,给予索引变量、位串计数器变量和形状变量新的值。将具有等于形状变量的形状ID的节点的偏移值加到索引。即,使用节点的偏移值来创建被用于标识匹配查询前缀的位流的索引。从位串计数器变量减去与具有等于形状变量的形状ID的节点相关联的偏移值。将形状变量设置成右子图的形状ID。在图4中,字符指示使在字符左边的变量递减等于在字符右边的变量和/或数字的值。字符“+=”指示在字符“+=”右边的变量增加等于在字符“+=”右边的变量和/或数字的值。
在454处,确定具有等于形状变量的形状ID的压缩节点是否是有效压缩节点。如果形状变量标识是有效压缩节点的压缩节点,那么索引变量递增一并且位串计数器变量递减1。
在458处,确定与形状变量相关联的压缩节点是否具有相关联的公共前缀。如果与形状变量相关联的压缩节点具有公共前缀,那么在462和464处确定公共前缀是否匹配查询前缀的i位置。例如,如果公共前缀是“10”、如果查询前缀是“010001”,并且如果i变量具有值2,那么查询前缀包含公共前缀并且在466处基于公共前缀的长度使i变量推进。如果公共前缀不在i变量位置处包含在查询前缀中,那么在468处将位串计数器设置成零,其指示在编索引的成形图中没有位串与查询前缀相关联。
在460处,如果与由形状变量描述的形状ID相关联的压缩节点不具有公共前缀,那么i变量递增一。在图4中的字符“++”指示使在字符“++”左边的变量递增一。即,评估在查询前缀中的下一位。在470处,确定是否已经到达查询前缀的末尾。如果已经到达查询前缀的末尾,那么在472处返回索引变量和位串变量。如果在470处尚未到达查询前缀的末尾,那么在446处检索和评估来自查询前缀的下一位。
索引变量和位串计数器变量可以描述与查询前缀相关联的所有位串。例如,如果索引变量等于“0”、如果位串计数器等于“3”,并且如果使用在图1C中的索引表114来引用与查询前缀相关联的位串,那么索引变量指示可以使用在图1C中的索引表114中的“0”索引来标识拥有具有“P2”值的位串ID的位串001。具有“3”值的位串计数器可以指示在图1C中的索引表114中的索引“0”、“1”和“2”与查询前缀相关联。这可以是当例如查询前缀具有“0”值时的情况。即位串“0”、“001”和“010”具有公共前缀“0”。
图5是图示了根据本公开的用于编索引的成形图创建的方法的示例的流程图。在574处,可以通过通信链路接收多个位串。通信链路可以从用户和/或从不同的源接收多个位串。例如,可以将不同的数据结构转换成编索引的成形图,其中通过通信链路从计算设备接收位串。
在576处,根据表示多个位串的多个节点创建二叉树。可以使用表示位串的多个标记和/或通过将位串直接插入到二叉树中来将位串插入到二叉树中。
在578处,可以基于包括多个位串和针对多个位串的多个索引的二叉树定义索引表。多个有效节点的遍历顺序可以定义位串的索引编制。当查找查询前缀时,可以使用位串的索引编制来标识共享公共前缀的位串。
在580处,可以基于二叉树创建成形图,其中成形图压缩多个节点中的一部分。可以使具有相似形状的节点浓缩成单个节点。可以基于如“<左子节点形状,右子节点形状,有效性标志>”的三元组来比较多个节点的形状。具有相同三元组的节点可以被分派当遍历节点时可以使用来标识节点的唯一的形状ID。
在582处,可以通过向在成形图中的压缩数量的节点中的每个分派可以与在索引表中的多个索引相关联的偏移值来将成形图转换成编索引的成形图。可以使用偏移值来确定包含查询前缀的位串的索引。
图6是图示了根据本公开的计算系统的示例的图。计算系统684可以利用软件、硬件、固件和/或逻辑来实施多个功能。
计算系统684可以是硬件和程序指令的组合,所述程序指令被配置成执行多个功能,例如动作。硬件例如可以包括一个或多个处理资源686和其他存储器资源690等。例如机器可读指令(MRI)的程序指令可以包括存储在存储器资源690上的指令来实现特定功能,例如诸如编索引的成形图创建的动作。
如本文描述的那样,处理资源686可以与存储器资源690通信,所述存储器资源690存储由处理资源686中的一个或多个可执行的MRI的集合。MRI还可以被存储在由服务器管理的远程存储器中并且表示可以被下载、安装和执行的安装包。例如服务器的计算设备684可以包括存储器资源690,并且处理资源686可以在云计算环境中被远程地耦合到存储器资源690。
处理资源686可以执行可以被存储在内部或者外部的非瞬时存储器690上的MRI。处理资源686可以执行MRI以执行例如动作的各种功能,除其他之外包括本文描述的功能。
如在图6中示出的那样,可以将MRI分割成多个模块,例如二叉树模块692、成形图模块694和编索引的成形图模块696,它们当由处理资源686执行时可以执行多个功能。如本文使用的那样,模块包括指令的集合,所述指令的集合被包括以执行特定任务或者动作。多个模块692、694和696可以是其他模块的子模块。例如,二叉树模块692和成形图模块694可以是子模块和/或被包含在单个模块内。更进一步地,多个模块692、694、696可以包括彼此分离并且彼此不同的单独的模块。
在图6的示例中,二叉树模块692可以包括由处理资源686执行以创建二叉树的MRI。二叉树可以是包括多个位串的数据结构。可以通过通信链路在计算设备处接收位串。计算设备可以接收文本,将文本转换成位串。可以修改与二叉树相关联的节点以包括形状ID,所述形状ID可以标识与多个节点相关联的唯一形状。
成形图模块694可以包括由处理资源686执行以包括创建成形图的MRI。可以使用计算设备、基于二叉树创建成形图。即,可以执行与计算设备相关联的逻辑以从二叉树标识具有相同形状ID的节点。可以执行逻辑以将共享形状ID的节点压缩成单个节点并且因此与在二叉树中存储位流的指令的集合的执行相比较减少通过在成形图中存储位流的指令的集合的执行相关联的和/或消耗的存储器资源。
编索引的成形图模块696可以包括由处理资源686执行以使在成形图中的浓缩节点中的每个与偏移值相关联来创建编索引的成形图的MRI。可以使用编索引的成形图来标识包括前缀的所有节点而不必迭代到压缩节点,其中标识的位流中的每个终止,例如与标识的位流中的每个相关联的有效节点中的每个。
如本文使用的那样,存储器资源690可以包括易失性和/或非易失性存储器。易失性存储器可以包括依赖功率来存储信息的存储器,诸如除其他之外的各种类型的动态随机访问存储器(DRAM)。非易失性存储器可以包括不依赖功率来存储信息的存储器。
可以以有线和/或无线的方式将存储器资源690集成地或者通信地耦合到计算设备。例如,存储器资源690可以是内部存储器、便携式存储器和便携式盘,或者与另一计算资源相关联的存储器,例如使MRI能够跨诸如因特网之类的网络被传输和/或执行。存储器资源690可以经由通信路径688与处理资源686通信。通信路径688对于与处理资源686相关联的例如计算机的机器而言可以是本地的或者远程的。
如本文使用的那样,“逻辑”是用以执行本文描述的特定动作和/或功能等的替代的或者附加的处理资源,其包括与计算机可执行指令相反的硬件,例如各种形式的晶体管逻辑、专用集成电路(ASIC)等,所述计算机可执行指令例如是存储在存储器中并且通过处理可执行的软件固件等。
如本文使用的那样,“一”或者“多个”某物可以指一个或多个这样的事物。例如,“多个小部件”可以指一个或多个小部件。
上文的说明书、示例和数据提供了方法和应用以及本公开的系统和方法的使用的描述。因为可以制造许多示例而不脱离本公开的系统和方法的精神和范围,所以该说明书仅记载许多可能的实施例配置和实现中的某些。
Claims (15)
1.一种用于索引成形图创建的方法,包括:
通过通信链路接收多个位串;
根据表示多个位串的多个节点创建二叉树;
基于包括多个位串和针对多个位串的多个索引的二叉树定义索引表;
基于二叉树创建成形图,其中成形图压缩多个节点中的一部分;以及
通过向在成形图中的压缩数量的节点中的每个分派可以与在索引表中的多个索引相关联的偏移值来将成形图转换成编索引的成形图。
2.如权利要求1所述的方法,其中基于二叉树创建成形图包括在多个节点之间定义多个边并且定义多个边的方向使得每个边具有左方向或者右方向中的一个。
3.如权利要求1所述的方法,其中创建成形图包括向在二叉树中的多个节点分派定义与多个节点相关联的多个形状的多个形状标识(ID),其中具有相同形状的节点具有相同的形状ID。
4.如权利要求3所述的方法,其中使在二叉树中的多个节点中的每个与多个形状ID相关联包括通过左子树形状、右子树形状和有效性标志来定义多个节点中的每个的形状,所述有效性标志指示多个位串中的一个是否在与有效性标志相关联的多个节点中的一个处终止。
5.如权利要求3所述的方法,其中方法包括将具有相同形状ID的节点压缩成单个节点。
6.如权利要求1所述的方法,其中多个节点的压缩在多个叶节点处开始并且进行到根节点。
7.一种存储用于索引成形图创建的指令的非瞬时机器可读介质,所述指令由机器可执行以使得机器:
通过通信链路接收多个位串;
创建根据多个位串的第一部分的第一紧凑二叉树和根据多个位串的第二部分的第二紧凑二叉树;
其中多个位串的第一部分基于与多个位串相关联的第一前缀并且多个位串的第二部分基于与多个位串相关联的第二前缀;并且
其中第一紧凑二叉树包括表示多个位串的第一部分的第一数量的节点并且其中第二紧凑二叉树包括表示多个位串的第二部分的第二数量的节点;
基于包括多个位串和针对多个位串的多个索引的二叉树定义索引表;
通过将第一数量的节点和第二数量的节点包括在成形图中、基于第一二叉树和第二二叉树创建成形图,其中成形图将第一数量的节点和第二数量的节点中的一部分压缩成单个节点;并且
通过向在成形图中的压缩数量的节点中的每个分派可以与多个索引相关联的偏移值来将成形图转换成编索引的成形图。
8.如权利要求7所述的介质,其中可执行以将成形图转换成编索引的成形图的指令包括用以基于与压缩数量的节点中的每个相关联的多个位串来针对压缩数量的节点中的每个分派偏移值的指令。
9.如权利要求8所述的介质,其中可执行以针对压缩数量的节点中的每个分派偏移值的指令包括用以分派等于在左子图中结束的多个结束节点的压缩数量的节点中的每个的偏移值的指令。
10.如权利要求7所述的介质,其中可执行以针对压缩数量的节点中的每个分派偏移值的指令包括用以分派等于在右子树中结束的多个结束节点的压缩数量的节点中的每个的偏移值的指令。
11.一种针对索引成形图创建的系统,包括:
与存储器资源通信的处理资源,其中存储器资源包括指令的集合,所述指令的集合由处理资源可执行以:
创建基于二叉树的索引成形图,其中编索引的成形图包括比二叉树少的节点并且其中编索引的成形图包括多个压缩节点的形式的多个位串的表示;
基于包括多个位串和针对多个位串的多个索引的二叉树定义索引表;
接收位串的形式的查询前缀;
将索引与包括查询前缀的多个位串中的一个相关联并且将位串计数与包括查询前缀的多个位串中的一部分相关联,其中关联基于编索引的成形图和索引表。
12.如权利要求11所述的系统,其中可执行以使索引与多个位串中的一个相关联并且使位串计数与多个位串中的部分相关联的指令包括用以基于查询前缀遍历编索引的成形图的指令。
13.如权利要求12所述的系统,其中可执行以遍历编索引的成形图的指令包括用以沿着对应于查询前缀的编索引的成形图中的路径并且在路径中的每个压缩节点处计算的指令更新索引和位串计数。
14.如权利要求13所述的系统,其中可执行以更新索引和位串计数的指令包括指令以:
当来自查询前缀的多个位中的一个等于1时:
通过将与多个压缩节点中的一个相关联的偏移值加到索引来更新索引;并且
通过从位串计数减去与多个压缩节点中的一个相关联的偏移值来更新位串计数;并且
当来自查询前缀的字符等于0时,通过设置位串计数器等于与压缩数量的节点中的一个相关联的偏移值来更新位串计数器。
15.如权利要求11所述的系统,其中可执行以使索引与多个位串中的一个相关联并且使位串计数与多个位串中的部分相关联的指令包括指令以:
使索引与来自索引表的多个索引中的一个和相关联的位串相关联;并且
使位串计数与多个索引中的一个之后的多个位串的部分相关联,其中多个位串的部分包括与位串计数的值一样多的位串。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/024132 WO2014120202A1 (en) | 2013-01-31 | 2013-01-31 | Indexed shaped graph creation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105074689A true CN105074689A (zh) | 2015-11-18 |
Family
ID=51262766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380075352.7A Pending CN105074689A (zh) | 2013-01-31 | 2013-01-31 | 编索引成形图创建 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20150363510A1 (zh) |
CN (1) | CN105074689A (zh) |
WO (1) | WO2014120202A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10649968B2 (en) | 2017-08-30 | 2020-05-12 | Ebay Inc. | Smaller proximate search index |
EP3746268A1 (en) | 2018-01-30 | 2020-12-09 | Milwaukee Electric Tool Corporation | Power tool |
US11074260B2 (en) * | 2018-09-04 | 2021-07-27 | Oracle International Corporation | Space-efficient methodology for representing label information in large graph data for fast distributed graph query |
US20220019907A1 (en) * | 2020-07-20 | 2022-01-20 | International Business Machines Corporation | Dynamic In-Memory Construction of a Knowledge Graph |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW448375B (en) * | 1998-08-11 | 2001-08-01 | I2 Technologies Inc | Data structure and operations for time-varying variable in an enterprise model |
US20040052251A1 (en) * | 2002-09-16 | 2004-03-18 | North Carolina State University | Methods and systems for fast binary network address lookups using parent node information stored in routing table entries |
CN1504912A (zh) * | 2002-12-05 | 2004-06-16 | �Ҵ���˾ | 用树状分段改善树搜索性能和存储器带宽的方法和系统 |
US20040243563A1 (en) * | 2001-08-29 | 2004-12-02 | Andreas Heiner | Method and system for classifying binary strings |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5546390A (en) * | 1994-12-29 | 1996-08-13 | Storage Technology Corporation | Method and apparatus for radix decision packet processing |
US6385649B1 (en) * | 1998-11-06 | 2002-05-07 | Microsoft Corporation | Routers and methods for optimal routing table compression |
US6334123B1 (en) * | 1999-09-03 | 2001-12-25 | Whamtech, Inc. | Index relational processor |
JP4527753B2 (ja) * | 2007-07-03 | 2010-08-18 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
US8631043B2 (en) * | 2009-12-09 | 2014-01-14 | Alcatel Lucent | Method and apparatus for generating a shape graph from a binary trie |
-
2013
- 2013-01-31 CN CN201380075352.7A patent/CN105074689A/zh active Pending
- 2013-01-31 US US14/763,797 patent/US20150363510A1/en not_active Abandoned
- 2013-01-31 WO PCT/US2013/024132 patent/WO2014120202A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW448375B (en) * | 1998-08-11 | 2001-08-01 | I2 Technologies Inc | Data structure and operations for time-varying variable in an enterprise model |
US20040243563A1 (en) * | 2001-08-29 | 2004-12-02 | Andreas Heiner | Method and system for classifying binary strings |
US20040052251A1 (en) * | 2002-09-16 | 2004-03-18 | North Carolina State University | Methods and systems for fast binary network address lookups using parent node information stored in routing table entries |
CN1504912A (zh) * | 2002-12-05 | 2004-06-16 | �Ҵ���˾ | 用树状分段改善树搜索性能和存储器带宽的方法和系统 |
Non-Patent Citations (2)
Title |
---|
LINPENG TANG ET AL;: "《Towards a Robust Framework of Network Coordinate Systems》", 《INTERNATIONAL LFIP TC 6 CONFERENCE ON NETWORKING》 * |
QUNYANG LIN ET AL;: "《Optimizing Site Selection for Global Load Balance in Application Delivery controller》", 《7TH OPEN CIRRUS SUMMIT》 * |
Also Published As
Publication number | Publication date |
---|---|
US20150363510A1 (en) | 2015-12-17 |
WO2014120202A1 (en) | 2014-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8176084B2 (en) | Structure based storage, query, update and transfer of tree-based documents | |
US7827219B2 (en) | Method for encoding, traversing, manipulating and querying a tree | |
US20140188885A1 (en) | Utilization and Power Efficient Hashing | |
CN104199860B (zh) | 一种基于二维地理位置信息的数据集分片方法 | |
CN102484610B (zh) | 路由表建立方法和装置及路由表查找方法和装置 | |
CN105704041A (zh) | 使用硬件辅助散列表的ccn路由 | |
US11182365B2 (en) | Systems and methods for distributed storage of data across multiple hash tables | |
CN104778258A (zh) | 一种面向协议数据流的数据抽取方法 | |
CN105814846B (zh) | 网络地址查询的前缀树阶段平衡 | |
CN105302803B (zh) | 一种产品bom差异分析与同步更新方法 | |
CN105677683A (zh) | 批量数据查询方法和装置 | |
CN105074689A (zh) | 编索引成形图创建 | |
EP2544414A1 (en) | Method and device for storing routing table entry | |
CN111190904A (zh) | 一种图-关系数据库混合存储的方法和装置 | |
CN108712414B (zh) | 一种基于序列比对的二进制未知协议报文格式划分方法 | |
CN107644070A (zh) | 数据索引方法、数据查询方法及电子设备 | |
CN109213820A (zh) | 一种实现多种类型的数据库融合使用的方法 | |
CN111324577A (zh) | 一种Yml文件读写的方法及装置 | |
CN103365991A (zh) | 一种基于一维线性空间实现Trie树的词典存储管理方法 | |
CN105095425A (zh) | 一种数据库的跨库结转方法及装置 | |
CN105574076B (zh) | 一种基于Bloom Filter的键值对存储结构及方法 | |
EP2660729A1 (en) | Device and method for storing mass data based on tree structure | |
CN105550220B (zh) | 一种异构系统的取数的方法及装置 | |
CN114048352A (zh) | Xml文件转换不定长结构体的方法 | |
CN111190545A (zh) | 一种基于软件实现的trie结构进行LPM规则压缩存储的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20170122 Address after: American Texas Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Applicant before: Hewlett-Packard Development Company, L.P. |
|
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20151118 |
|
WD01 | Invention patent application deemed withdrawn after publication |