什么是使用位运算符在非常长的字符串中查找子字符串的最快(并行?)方法?
例如,在人类基因组http://hgdownload.cse.ucsc.edu/goldenPath/hg18/bigZips/hg18.2bit(770MB)中查找“GCAGCTGAAAACA”序列的所有位置
*字母表由4个符号('G','C',T,'A')组成,使用2位表示: 'G':00,'A':01,'T':10,'C':11
*您可以假设查询字符串(较短的字符串)长度固定,例如127个字符
*最快的意思是不包括任何预处理/索引时间
*文件将在预处理后加载到内存中,基本上会有数十亿个要在较大的字符串中搜索的短字符串,全部在内存中。
*位运算,因为我正在寻找在大型位数组中搜索位模式的最简单,最快的方法,并尽可能靠近硅。
*KMP不适用于小字母表。
*C代码和x86机器代码都很有趣。
输入格式说明(.2bit):http://jcomeau.freeshell.org/www/genome/2bitformat.html 相关: 在比特流中扫描位模式的最快方法 算法帮助!快速搜索具有其伙伴的字符串的算法
例如,在人类基因组http://hgdownload.cse.ucsc.edu/goldenPath/hg18/bigZips/hg18.2bit(770MB)中查找“GCAGCTGAAAACA”序列的所有位置
*字母表由4个符号('G','C',T,'A')组成,使用2位表示: 'G':00,'A':01,'T':10,'C':11
*您可以假设查询字符串(较短的字符串)长度固定,例如127个字符
*最快的意思是不包括任何预处理/索引时间
*文件将在预处理后加载到内存中,基本上会有数十亿个要在较大的字符串中搜索的短字符串,全部在内存中。
*位运算,因为我正在寻找在大型位数组中搜索位模式的最简单,最快的方法,并尽可能靠近硅。
*KMP不适用于小字母表。
*C代码和x86机器代码都很有趣。
输入格式说明(.2bit):http://jcomeau.freeshell.org/www/genome/2bitformat.html 相关: 在比特流中扫描位模式的最快方法 算法帮助!快速搜索具有其伙伴的字符串的算法