需要改进序列检测算法

时间:2012-06-12 16:49:35

标签: python algorithm math

这个问题很复杂,所以请提出问题以解释这个问题的更多细节。 (ps。我不是母语为英语的人,这就是为什么......)

输入是长度为34的 样本序列,而输出是结果部分

目前,我有一个序列 示例 长度为34 ,它可以构造为: (“结果”是我需要的)

样本序列 = 结果部分+ 已知序列(我不知道的长度结果部分)

  1. 结果(长度34)
  2. 结果(长度N,N <34)+ 已知序列(34 - N)
  3. 所有这些数字都是随机的。

    现在,我需要找到结果部分,而不包括序列已知部分。

    一些背景信息:

    1. 我有1000万这个 样本序列,长度为34。 (来自发电机的10百万知道34位随机数序列)

    2. 在找到结果后,我需要对它进行比较,在500万个序列 B 上进行比较,并找出结果序列是否在某个长序列上唯一匹配

    3. 我目前的algrothm是使用检测器,它是已知序列的前10位数字,如果我在 <中某处检测到检测序列,则删除序列em>样本序列。但是,结果仍有可能包含已知序列内部的序列部分。有没有人有更好的algrothm?

      非常感谢!另外,我是在python下编程的。

      离。

      第一个条件

      199010104761700150004736290473629657 ==样本序列

      所有结果和已知部分仍然相同

      输入:

      199010104761700150004736290473629657

      输出:

      199010104761700150004736290473629657

      第二个条件

      199010104728392817111123995561547659 ==样本序列

      1990101047 ==结果部分

      28392817111123995561547659 ... ==已知部分

      输入将是:199010104728392817111123995561547659,28392817111123995561547659 ...

      我想要的输出是:1990101047

1 个答案:

答案 0 :(得分:1)

您可以使用Knuth–Morris–Pratt algorithm。您实际上找不到子字符串,但是当您到达主题字符串的末尾时,您可以记下i的值。