一种挖掘最大重复序列的方法及装置的制造方法_5

文档序号:9375664阅读:来源:国知局
模式编号以及所述模式编号对应的序列模式的在当前分支的剩余长度在所述后缀树对应 的分支上进行表示。
[0217] 例如,假如已经找出1000个模式信息,并且现在要比较正在识别的序列"ab",此 时如果要完全查找信息表的话,需要从表开始到结束比较1000次;而如果将模式信息根据 后缀树的存储规则储存在后缀树上的话,只需要比较在"ab"分支上的模式就可以了,若在 "ab"分支上有10个模式信息,则需要比较这10个就可以了,加快了比较的速度,方便检索。
[0218] 其中,所述将所述最大重复序列以及所述最大非串联重复序列的相关信息在所述 后缀树上进彳丁表TK为:
[0219] 分别将序列模式的模式编号,以及,所述模式编号对应的序列模式的剩余长度在 所述后缀树对应的分支上进行表示。
[0220] 例如,将确定的最大非串联重复序列"ab"以及"b"的相关信息存储在预设的模式 信息表1中,并如图5所7K,对应表1将挖掘出的序列模式的相关信息在后缀上表7K,其中, 后缀树的分支r - 8上存储的字符为"a",为模式信息表中模式编号1、模式编号2对应的序 列的首字符,则在分支r - 8上存储模式编号1和模式编号1对应的序列的长度,以及,模式 编号2和模式编号2对应的序列的长度的相关信息,分别为[1,2]、[2, 1],沿着分支r - 8 向下搜索,在模式编号1对应的序列的剩余字符对应的分支8 - 4上,存储模式编号1和模 式编号1对应的序列的剩余长度1的相关信息[1,1]。
[0221] 由上可知,本发明实施例提供一种挖掘最大重复序列的装置,获取字符;将所述字 符追加到流水线集合中的每个流水线中,分别判断追加所述字符后的每个流水线中的序列 与后缀树上对应的序列是否相同,其中,所述流水线集合包含至少一个流水线,所述流水线 包含序列以及位置指针,所述序列包含与所述字符所在的字符串中所述字符之前的字符相 同的字符,所述位置指针指向所述流水线包含的序列的尾字符在所述后缀树上的位置;在 所述流水线集合中,若存在第一流水线,在追加所述字符后的序列与后缀树上对应的序列 不同,则根据第一预设策略以及所述第一流水线中的序列确定最大重复序列;如此,通过流 水线结构和后缀树结构的相互结合,挖掘最大重复序列,提高了计算速率;同时,在所述流 水线集合中,若存在第二流水线,在追加所述字符后的序列与后缀树上对应的序列相同,则 将所述字符追加到所述第二流水线中,并将所述第二流水线的位置指针指向追加所述字符 后的所述第二流水线包含的序列的尾字符在所述后缀树上的位置;根据所述第二流水线的 位置指针以及第二预设策略确定最大非串联重复序列;以使得所挖掘的最大重复序列为非 串联重复序列;如此,避免了现有技术不能实现增量式挖掘,计算量大,以及挖掘的最大重 复序列包含冗余的串联结构,不能有效地表达序列模式的最小单元的问题。
[0222] 实施例三
[0223] 参见图11,为本发明实施例提供的一种挖掘最大重复序列的装置110,如图11所 示,该装置可以包括:处理器1101、存储器1102、通信单元1103,至少一个通信总线1104,用 于实现这些装置之间的连接和相互通信;
[0224] 处理器1101可能是一个中央处理器(英文:central processing unit,简称为 CPU);
[0225] 存储器1102,可以是易失性存储器(英文:volatile memory),例如随机存取存储 器(英文:random_access memory,缩写:RAM);或者非易失性存储器(英文:non_volatile memory),例如只读存储器(英文:read-〇nly memory,缩写:ROM),快闪存储器(英文: flash memory),硬盘(英文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid_state drive,缩写:SSD);或者上述种类的存储器的组合,并向处理器1101提供指令和数据;
[0226] 通信单元1103,用于与外部网元之间进行数据传输。
[0227] 所述通信单元1103 :用于获取字符。
[0228] 其中,所述字符属于字符串,所述字符串为包含多个字符的长序列,字符为所述字 符串中的任一字符;优选的,可以从存储有所述字符串的数据库中,按照所述字符串中的字 符顺序逐一读取字符;例如,假设字符串为"abcabxa",则按照字符串中的字符顺序分别读 取的字符为 " a"、"b "、" c "、" a"、"b "、" X "、" a"。
[0229] 进一步,还可以在一段时间内,按照时间先后接收其他系统发送的字符,形成字符 串;例如,在一段时间的每一时刻分别接收到的字符为"a"、"b"、"c"、"a"、"b"、"x"、"a"JJ 在这段时间内接收到的字符串为"abcabxa"。
[0230] 处理器1101,用于将通信单元1103获取到的字符追加到流水线集合中的每个流 水线中,分别判断追加所述字符后的每个流水线中的序列与后缀树上对应的序列是否相 同。
[0231] 其中,所述流水线集合包含至少一个流水线,所述流水线包含序列以及位置指针, 所述序列包含与所述字符所在的字符串中所述字符之前的字符相同的字符,所述位置指针 指向所述流水线包含的序列的尾字符在所述后缀树上的位置;例如,如图4所示,字符串为 "abcababab",在步骤6读取的字符为"a",此时,流水线集合包含#4、#5流水线,后缀树为 第五后缀树,#4流水线包含与字符"a"之前的序列重复的序列"ab"以及序列"ab"中尾字 符"b"在第五后缀树上的位置指针〈r - 1,2〉,#5流水线包含与字符"a"之前的序列重复 的序列"b"以及序列"b"在第五后缀上的位置指针〈r - 2,1〉。
[0232] 所述将字符追加到流水线中指的是将所述字符存储在流水线包含的序列的后面; 例如,流水线1包含的序列为"ab",获取的字符为"X",则将获取的字符追加到流水线1中 为将字符"X"添加到序列"ab"中,以"abx"的形式存储在流水线1中。
[0233] 所述处理器1101,还用于在所述流水线集合中,若存在第一流水线,在追加所述字 符后的序列与后缀树上对应的序列不同,则根据第一预设策略以及所述第一流水线中的序 列确定最大重复序列。例如,如图4所示,在步骤6中,追加字符"a"后的#4流水线中的序 列"aba"与第五后缀树上对应的序列不同,则不将字符"a"追加到#4流水线中,同时,根据 第一预设策略以及#4流水线中的序列"ab"确定#4流水线中的序列"ab"是否是最大重复 序列。
[0234] 进一步的,所述处理器1101具体用于:
[0235] 在所述后缀树上,分别移动每个流水线中的位置指针,使所述位置指针指向与所 述流水线包含的序列的尾字符相邻的下一个字符的位置;
[0236] 判断移动后的所述位置指针指向的字符与所述字符是否相同;若不同,则确定追 加所述字符后的流水线中的序列与后缀树上对应的序列不同;若相同,则确定追加所述字 符后的流水线中的序列与后缀树上对应的序列相同。例如,如图4所示,在步骤6,依次移动 #4、#5流水线的位置指针,使其指向位置〈r - 1,3〉以及〈r - 2, 2〉,发现〈r - 1,3〉以及 〈r - 2, 2〉位置上的字符均为"c",与字符不相同,则确定追加字符后的#4流水线中的序列 "aba"与第五后缀树上对应的序列不同,追加字符后的#5流水线中的序列"ba"与第五后缀 上对应的序列不同。
[0237] 进一步的,所述处理器1101具体用于:
[0238] 在所述字符串中,检测与所述第一流水线中的序列相同的序列相邻的左边字符是 否为同一种字符,以及,检测与所述第一流水线中的序列相同的序列相邻的右边字符是否 为同一种字符;
[0239] 若与所述第一流水线中的序列相同的序列相邻的左边字符不为同一种字符,且与 所述第一流水线中的序列相同的序列相邻的右边字符不为同一种字符,则确定所述第一流 水线中的序列为最大重复子序列;
[0240] 若与所述第一流水线中的序列相同的序列相邻的左边字符为同一种字符,或者, 与所述第一流水线中的序列相同的序列相邻的右边字符为同一种字符,或者,与所述第一 流水线中的序列相同的序列相邻的左边字符为同一种字符以及与所述第一流水线中的序 列相同的序列相邻的右边字符为同一种字符,则确定所述第一流水线中的序列不是最大重 复序列,并销毁所述第一流水线。
[0241] 其中,所述在所述字符串中,检测与所述第一流水线中的序列相同的序列相邻的 左边字符是否为同一种字符,以及,检测与所述第一流水线中的序列相同的序列相邻的右 边字符是否为同一种字符,可以包括:
[0242] 在所述字符串中,获取与所述第一流水线中的序列相同的序列相邻的左边字符 集;若所述字符集包含同一种字符,则确定与所述第一流水线中的序列相同的序列相邻的 左边字符为同一种字符;若所述字符集包含至少两种字符,则确定与所述第一流水线中的 序列相同的序列相邻的左边字符不为同一种字符;
[0243] 在所述后缀树上,判断所述第一流水线的位置指针所指字符与所述字符是否相 同,若相同,则确定与所述第一流水线中的序列相同的序列相邻的右边字符为同一种字符, 若不同,则确定与所述第一流水线中的序列相同的序列相邻的右边字符不为同一种字符。 例如:读取的字符为"X",第一流水线中包含的序列为"ab",且追加"X"后的第一流水线与 后缀树上对应的序列不同,且所述序列"ab"在字符串"#abcabxa"中,首先获取所述字符串 "#abcabxa"中与序列"ab"相同的序列相邻的左边字符集为("#","c"),确定与所述第一 流水线中的序列相同的序列相邻的左边字符不为同一种字符;其次,若所述第一流水线的 位置指针〈r - 4,1〉在后缀树上所指的字符为"a",与读取的字符"X",则确定与所述第一 流水线中的序列相同的序列相邻的右边字符不为同一种字符,由此可知,第一流水线中包 含的序列"ab"为最大重复序列。
[0244] 进一步的,所述处理器1101还用于:
[0245] 销毁所述第一流水线。
[0246] 通常情况下,采用上述装置获取最大重复序列,虽然能够实现增量式挖掘,提高计 算速率,但是获取的最大重复序列可能包含较多冗余子序列,不能有效地表达序列模式的 最小单位,不便于理解与分析;例如,对序列"#xyababpqababmn$"进行最大重复序列挖掘 时,会将"abab"作为其中的最大重复序列,而子序列"abab"是由更小的两个相同子序列 "ab"串联组成的。因此,为了使得所挖掘出来的序列为最大非串联重复序列,进一步的,所 述处理器1101还用于:
[0247] 在所述流水线集合中,若存在第二流水线,在追加所述字符后的序列与后缀树上 对应的序列相同,则将所述字符追加到所述第二流水线中,并将所述第二流水线的位置指 针指向追加所述字符后的所述第二流水线包含的序列的尾字符在所述后缀树上的位置;
[0248] 根据所述第二流水线的位置指针以及第二预设策略确定最大非串联重复序列。
[0249] 进一步的,所述处理器1101具体用于:
[0250] 判断所述第二流水线的位置指针与所述第二流水线的参考流水线的位置指针是 否相同;其中,所述第二流水线的参考流水线为读取所述第二流水线包含的序列的首字符 时,在所述流水线集合中,包含的序列的首字符与所述第二流水线包含的序列的首字符相 同的流水线;
[0251] 若相同,则确定所述第二流水线中的序列为最大非串联重复序列。
[0252] 例如,第二流水线包含的序列的首字符为"a",当读取"a"时(即第二流水线还 为空流水线时),遍历流水线集合中的每一个流水线,发现#4流水线中包含的首字符也为 "a",且此时#4流水线的位置指针为〈r - 4 - 2,1〉,则将#4流水线确定为第二流水线的 参考流水线,位置指针〈r - 4 - 2,1〉确定为第二流水线的参考指针,若第二流水线在不 断追加新字符的过程中,其位置指针到达〈r - 4 - 2,1〉,则将第二流水线的位置指针为 〈r - 4 - 2,1〉时包含的序列确定为最大非串联重复序列。
[0253] 进一步的,所述处理器1101还用于:
[0254] 在读取字符之前,建立空流水线;
[0255] 遍历所述后缀树的每个分支的首字符;若存在与所述字符相同的首字符,则将所 述字符存储在所述空流水线中,并将所述空流水线的位置指针指向与所述字符相同的首字 符在所述后缀树上的位置;同时,在所述流水线集合中,若存在第三流水线,在追加所述字 符后的序列与后缀树上对应的序列不同,将所述后缀树上对应的分支从所述第三流水线的 位置指针指向的位置开始分裂成两个分支,将所述字符插入到分裂后的所述后缀树的每一 个分支上;若存在第三流水线,在追加所述字符后的序列与后缀树上对应的序列相同,将所 述字符插入到所述后缀树的每一个分支上;
[0256] 若不存在与所述字符相同的首字符,则销毁空流水线,从所述后缀树的根节点分 裂出一个新的分支;同时,在所述流水线集合中,若存在第三流水线,在追加所述字符后的 序列与后缀树上对应的序列不同,将所述后缀树上对应的分支从所述第三流水线的位置指 针指向的位置开始分裂成两个分支,将所述字符插入到分裂后的所述后缀树的每一个分支 上;若存在第三流水线,在追加所述字符后的序列与后缀树上对应的序列相同,将所述字符 插入到分裂后的所述后缀树的每一个分支上。
[0257] 进一步的,为了在后续工作中,方便快速地利用获取的模式信息进行分析,所述处 理器1101还用于:
[0258] 将确定的最大重复序列以及最大非串联重复序列的相关信息存储在预设的模式 信息表中,以及,将所述最大重复序列以及所述最大非串联重复序列的相关信息在所述后 缀树上进行表示;其中,所述相关信息包含:序列编号,序列内容,序列长度。
[0259] 所述将所述最大非串联重复序列的相关信息在所述后缀树上进行表示为:分别将 模式编号以及所述模式编号对应的序列模式的在当前分支的剩余长度在所述后缀树对应 的分支上进行表示。
[0260] 例如,假如已经找出1000个模式信息,并且现在要比较正在识别的序列"ab",此 时如果要完全查找信息表的话,需要从表开始到结束比较1000次;而如果将模式信息根据 后缀树的存储规则储存在后缀树上的话,只需要比较在"ab"分支上的模式就可以了,若在 "ab"分支上有10个模式信息,则需要比较这10个就可以了,加快了比较的速度,方便检索。
[0261] 其中,所述将所述最大重复序列以及所述最大非串联重复序列的相关信息在所述 后缀树上进彳丁表TJK为:
[0262] 分别将序列模式的模式编号,以及,所述模式编号对应的序列模式的剩余长度在 所述后缀树对应的分支上进行表示。
[0263] 例如,将确定的最大非串联重复序列"ab"以及"b"的相关信息存储在预设的模式 信息表1中,并如图5所7K,对应表1将挖掘出的序列模式的相关信息在后缀上表7K,其中, 后缀树的分支r - 8上存储的字符为"a",为模式信息表中模式编号1、模式编号2对应的序 列的首字符,则在分支r - 8上存储模式编号1和模式编号1对应的序列的长度,以及,模式 编号2和模式编号2对应的序列的长度的相关信息,分别为[1,2]、[2, 1],沿着分支r - 8 向下搜索,在模式编号1对应的序列的剩余字符对应的分支8 - 4上,存储模式编号1和模 式编号1对应的序列的剩余长度1的相关信息[1,1]。
[0264] 由上可知,本发明实施例提供一种挖掘最大重复序列的装置110,获取字符;将所 述字
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1