【问题标题】:Repeated ordered sequence search algorithm重复有序序列搜索算法
【发布时间】:2015-09-09 14:03:11
【问题描述】:

我有大量有序的符号序列,数百万个符号。 我必须找到重复的有序子序列,这样:

  1. 搜索子序列未知,我必须找到在大序列的其他地方重复的子序列。
  2. 子序列可能存在差异,例如存在一定数量的噪声和不存在某些符号。

非必要条件:

  1. 子序列可能有少量的相邻符号排列。

字母表由数千个符号组成。

您能否为此类任务推荐知名且经过充分研究的算法?

【问题讨论】:

  • 符号是如何排序的?
  • 你有多少基本模式?
  • @igael,未定义。
  • @user3360241,顺序不是随机的,也不是排序的。
  • 一些例子会有所帮助。例如,如果您有序列“abcdefgh abcxefgh ”,您会认为abcxefghabcdefgh 的重复吗?毕竟,x 可以被认为是噪音。 abcefgh 会被视为重复吗?只是缺少一个符号。您要查找的重复子序列有多长?您愿意容忍多少百分比的缺失符号或噪音?

标签: algorithm sequence data-mining dynamic-programming bioinformatics


【解决方案1】:

您可以尝试 aho-corasick 多重模式匹配并使用通配符来搜索子字符串。对于子序列,您还需要列文斯坦距离。您可以在https://phpahocorasick.codeplex.com 尝试我在 PHP 中使用通配符实现 aho-corasick 算法。

【讨论】:

  • 但他正在寻找序列中的重复子序列。他没有在序列中搜索所有出现的用户输入模式。为此使用 Aho-Corasick 算法将需要二次时间。也就是说,给定序列“abcdq9abxcdabcd”,他必须搜索“a”,然后搜索“ab”,然后搜索“abc”,然后搜索“bc”,等等。这甚至没有考虑到模糊模式匹配需要满足他的第二个要求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-04
  • 2011-03-21
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
  • 2021-07-07
相关资源
最近更新 更多