编索引成形图创建的制作方法
【专利说明】编索引成形图创建
【背景技术】
[0001] 数据结构可以包括多个字符的表示。可以遍历(traverse)数据结构来提取多个 字符。数据结构可能需要与多个字符的编索引和查找相关联的存储器资源和处理资源。
[0002] 二叉树可以是存储多个字符的数据结构,使得二叉树可以被遍历以检索字符的 串。然而,随着存储在二叉树中的字符的串的大小增加,用于存储字符的串的存储器分配也 增加。减少被分配以存储二叉树中的信息的存储器而不丢失信息可以提供比二叉树更有效 率的数据结构。
【附图说明】
[0003] 图IA是图示了根据本公开的位串列表的示例的图。
[0004] 图IB是图示了根据本公开的二叉树的示例的图。
[0005] 图IC是图示了根据本公开的编索引的成形图(indexedshapedgraph)的示例的 图。
[0006] 图2A是图示了根据本公开的位串列表的示例的图。
[0007] 图2B是图示了根据本公开的包括公共前缀的二叉树的示例的图。
[0008] 图2C是图示了根据本公开的包括公共前缀的编索引的成形图的示例的图。
[0009] 图3A是图示了根据本公开的切分标记(token)列表的示例的图。
[0010] 图3B是图示了根据本公开的切分压缩的示例的图。
[0011] 图4是图示了根据本公开的查询查找的示例的流程图。
[0012] 图5是图示了根据本公开的用于编索引的成形图创建的方法的示例的流程图。
[0013] 图6是图示了根据本公开的计算系统的示例的图。
【具体实施方式】
[0014] 数据结构的使用可以与存储器资源和处理资源相关联。例如,数据结构可以存在 于存储器中并且由数据结构占用的存储器的量可以与同数据结构相关联的数据的类型和/ 或信息的大小成比例。处理资源可以基于从数据结构检索信息所需的处理资源而与数据结 构相关联。减少构造数据结构和从数据结构检索信息需要的存储器资源和处理资源的大小 可以影响数据结构的效率并且可以提供同与存储器资源和/或处理资源的较大使用相关 联的数据结构相比更好的替代方案。
[0015] 如本文使用的那样,数据结构可以是在存储器中的信息的组织。可以通过用于存 储信息的组织方案来区分数据结构。信息可以指除其他数据类型之外的串和/或整数,例 如文本和/或数字。可以将信息以标记的形式存储在数据结构中。可以将信息划分成标记, 例如标记化(tokenize),使得多个标记与多个字符相关联。例如,可以将串"abc"标记化成 表示字符"a"的第一标记、表示字符"b"的第二标记以及表示字母"c"的第三标记。可以 将标记存储在数据结构中。
[0016] 在先前的方法中,可以使用例如数据结构的二叉树来存储标记的多个列表,例如 信息。然而,可以通过使形状与二叉树相关联并且浓缩具有相似形状的二叉树的部分以创 建成形图来减少与在二叉树中存储标记的多个列表相关联的存储器资源和处理资源。成形 图可以被编索引以适应在成形图上的查找能力。当为成形图编索引时创建了编索引的成形 图。
[0017] 在本公开中,参考形成本文的一部分的附图,并且其中通过图示的方式示出可以 如何实行本公开的多个示例。以足够的细节描述了这些示例以使本领域普通技术人员能够 实行该公开的示例,并且应理解可以使用其他示例并且可以做出过程、电和/或结构改变 而不脱离本公开的范围。
[0018] 本文的图遵循编号约定,其中第一个数字对应于绘图编号并且剩余的数字标识图 中的元素或者部件。可以添加、交换和/或消除在本文的各种图中示出的元素从而提供本 公开的多个附加示例。此外,在图中提供的元素的比例和相对比例意图图示本公开的示例, 并且不应该被在限制性的意义上理解。
[0019] 图IA是图示了根据本公开的位串列表102的示例的图。位串列表102包括具有相 关联的位串标识(ID) "P1"的第一位串"0"、具有相关联的位串ID"P2"的第二位串"001"、 具有相关联的位串ID"P3"的第三位串"010"、具有相关联的位串ID"P4"的第四位串"101" 以及具有相关联的位串ID"P5"的第五位串"110"。
[0020] 如本文使用的那样,位串可以表示二进制形式的信息。例如,二进制" 0 "可以表示 十进制数字〇、二进制"001"可以表示十进制数字1、二进制"010"可以表示十进制数字2、 二进制"101"可以表示十进制数字5,并且二进制"110"可以表示十进制数字6。可以标记 化位串使得在位串中每个字符,例如"〇"或者" 1"与标记相关联。标记的列表可以表示位 串。例如,二进制" 101"可以由表示" 1"的第一标记、表示" 0 "的第二标记和表示" 1"的第 三标记表示。第一标记、第二标记和第三标记可以组成表示二进制"101"的标记的列表。 [0021 ] 如本文使用的那样,标记可以是表示除其他文本符号之外的例如"0"和/或" 1" 的二进制字符和/或例如"a"、"b"和/或"c"的文本字符的对象。可以使用多个指针将标 记链接在一起来创建标记的列表。在多个示例中,位串列表可以将位串中的每个定义为单 独的字符的列表和/或定义为标记的列表。如本文使用的那样,可交换地使用标记列表和 位串列表并且同样地也可交换地使用标记和位。
[0022] 图IB是图示了根据本公开的二叉树的示例的图。图IB包括二叉树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的表示。
[0023] 如本文使用的那样,二叉树是有序的树数据结构。在多个示例中,二叉树可以是除 其他类型的二叉树结构之外的二叉单词查找树(trie)。二叉树可以包括定义存储在二叉树 中的标记的多个列表的多个节点,例如对象。二叉单词查找树可以是二叉树,其中没有单个 节点定义标记的列表而是在二叉树内的节点和将该节点连接到二叉树的根节点,例如从节 点到根节点的路径,的多个其他节点的位置可以定义标记的列表。
[0024] 多个节点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。
[0025] 在图IA中标识的位串中的每个可以与在二叉树104-1和二叉树104-2中的多个 节点相关联。例如,具有"〇"值的位串可以与节点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处终止。
[0026] 组成二叉树104-1的节点106和边122可以位于存储器中。SP,与二叉树104-1 相关联的十一个节点可以位于存储器中。为了减少与构建二叉树和存储在图IA中的位串 相关联的存储器资源,可以减少表示位串需要的多个节点。
[0027] 与存储位串相关联的节点的减少可以开始于压缩二叉树104-1中的节点106的一 部分。如本文使用的那样,多个节点的压缩可以包括将多个节点表示为单个节点,使得仅一 个节点与多个节点相关联。
[0028] 压缩过程可以开始于使形状与节点中的每个相关联并且向每个形状分派形状ID。 压缩过程在二叉树中的叶节点处开始。叶节点表示不具有相关联的孩子节点的节点。节 点的形状可以由左子节点的形状、右子节点的形状和节点的有效性定义,所述节点的有效 性例如位串是否在节点处结束。左子节点的形状、右子节点的形状和节点的有效性可以被 称为三元组并且可以被表示为"〈左子节点形状,右子节点形状,有效性标志 >"。在二叉树 104-2中的每个节点的形状ID由在每个节点内的数字指示。如本文使用的那样,当从根节 点到最后的节点的路径表不位串时,位串在节点处结束。
[0029] 例如,因为节点106-8不具有相关联的右子节点和相关联的左子节点并且因为节 点106-8是有效节点,所以节点106-8的形状可以由三元组"〈,,有效〉"定义。可以向形 状"〈,,有效〉"分派1的形状ID。形状ID可以与给定的节点相关联。例如,节点106-8可 以与形状ID1相关联。因为节点106-9U06-10和106-11具有由三元组"〈,,有效〉"定义 的相关联的形状,所以节点106-9U06-10和106-11可以与形状ID1相关联。将共享形状 ID的节点