我从一堆(数百万)小实验中得到了记录。
每个日志包含一个列表(数十到数百个)条目。每个条目都是一个时间戳和一个事件ID(有几千个唯一的事件ID,每个事件ID可能会在日志中多次出现)。以下是一个实验日志的示例:
1403973044 alpha 1403973045 beta 1403973070 gamma 1403973070 alpha 1403973098 delta
我需要找到许多实验常用的序列。
序列是几个(至少两个)相互跟随的事件ID:
alpha beta gamma
公共序列是至少可以在两个日志中找到的序列。日志
alpha beta gamma delta epsilon
和
iota beta gamma epsilon kappa
有一个共同的序列:
beta gamma epsilon
(显然,我在这里寻找最长的常见序列。)
我对经常发生的大序列感兴趣。我事先不知道截止值。比方说,我需要前1000个(或前30%)中的前10个(或者,可能是前100个序列)。 (该标准是随机给出的,几乎可以任意改变,以便于数据处理。)
有关如何以可扩展的方式执行此操作的任何建议吗?
我希望尽量减少我拥有的代码量,但我不想使用专有程序来获得解决方案。
......我认为在生物信息学中解决了一个类似的问题。 但他们的字母比我短得多: - )错了!蛋白质组学处理更大的字母表! (感谢@JayInNyc)