Suk*_*ini 21 string algorithm matching knuth-morris-pratt rabin-karp
我使用以下字母表生成了一个字符串.
{A,C,G,T}
.我的字符串包含超过10000个字符.我正在搜索以下模式.
我已经要求使用具有O(m+n)
运行时间的字符串匹配算法.
m = pattern length
n = text length
Run Code Online (Sandbox Code Playgroud)
两者KMP and Rabin-Karp algorithms
都有这个运行时间.在这种情况下,最合适的算法(Rabin-Carp和KMP之间)是什么?
izo*_*ica 20
当您想要搜索多个模式时,通常正确的选择是使用Aho-Corasick,这有点是KMP的概括.现在在你的情况下,你只搜索3个模式,因此KMP可能不是那么慢(最多三次),但这是一般的方法.
如果我们假设碰撞永远不会发生,Rabin-Karp更容易实现,但如果您遇到的问题是典型的字符串搜索KMP将更稳定,无论您有什么输入.然而,Rabin-Karp还有许多其他应用,其中KMP不是一种选择.