在模式匹配中是否存在任何预先存在的有效算法(DNA的大数据)?
有很多算法,如Knuth-Morris-Pratt算法,Boyer-Moore算法,基于索引的前向后向多模式算法,但它们很有效,并且当它很大时表现很差。所以请帮助我了解模式匹配中的高效算法......
答案 0 :(得分:2)
答案 1 :(得分:1)
我确信这一定必须在其他地方讨论过。
我猜你已经只使用两位来存储字符串(而不是每个字符使用8位)。这不仅将存储大小减少了四倍(我猜你的字符串可以长达数亿个字符),而且还减少了传输此数据的时间(例如,从磁盘到内存或从内存到CPU缓存) )。
以下假设在要搜索的字符串保持不变的情况下存在大量查询,因此根据字符串计算和存储一些额外的数量是合理的。
我建议您查看suffix trees,可以使用Ukkonen's algorithm以线性时间构建。
如果这不可行,也许你应该考虑一种混合方法,比如建立一个固定长度为L的所有可能单词的固定集合字典,并将你的字符串划分为区域。
对于第二种方法,您需要调整参数(字典中单词的长度L和区域的大小/数量)。