首页 > 如何用C实现这样一个索引算法?

如何用C实现这样一个索引算法?

今天在CU上无意看到的一个题目,但是当时没有人给出合理的答案,而这个问题在基因处理中的确存在这样的需求,所以拿出来问问各位,希望可以给出较好的解决方案。
题目是这样的(有所精简):
读取文本文件,内容为基因序列字符串,包括基因的id及其对应的序列(也就是由AGCT四种字符组成的文本内容)。现在想对这个文件做索引以便搜索。如果待查询的字符串长度为K,那么我需要得到这个文件中所有的长度为K的子串的位置以及子串所属的基因(基因id)

题目比较复杂,举例来说:

比如文件的内容如下:

0
AGCAGGGGGGCTTATTATTACCCCCCCTGCTCGGGGCGGGACATTCTGTG
ATGGGCTGGGCTTTATGCGGCCAAATAAGCCCATAAAGCCAGATCTGGGC
CCATTTAAGGGCCCGTGGTTTGAAAATGTCGCGTTCCCGCCTAA
……
1
……
2
我要查询所有长度为k的子串的位置,例如查询AAGCCCA(k=7),把这个子串的所有位置信息找出来,并且要知道这个子串是在>0对应的序列上,还是在>1对应的序列上。

原题和之前的讨论见:http://bbs.chinaunix.net/thread-4078417-1-1.html


首先复述题意以确认我没有理解错题主意思:
给定多个母串,然后给出一个模式串,用模式串去匹配母串,要求得到每一个匹配所对应的母串序号,及其在该母串中的位置
如果确认是该题意的话,可以用AC自动机轻松实现

【热门文章】
【热门文章】