繁体   English   中英

使用Ukkonen算法的时间复杂度,Knuth–Morris–Pratt(KMP)和后缀树之间的差异。

[英]Difference between Knuth–Morris–Pratt (KMP) and suffix tree using Ukkonen's algorithm for time complexity.

是否可以使用Ukkonen算法通过KMP和后缀树找到最长的公共子串,最长的回文子串,最长的重复子串,搜索所有模式和子串检查? 如果是,那么既然两种算法都具有线性时间复杂度,那我应该使用哪一种?

为了找到最长的公共子串,我将使用具有线性复杂度的Kadane算法。 对于最长的回文子串,可以选择Manacher算法,该算法也具有线性复杂度。 对于重复的字符串并搜索所有模式,是的,选择将归结为KMP和Boyer-Moore。 至于哪一个,Boyer-Moore匹配模式的最后一个字符而不是第一个字符,并假设如果结尾处不存在匹配,则无需在开头尝试匹配。 KMP通过采用以下观察结果来搜索主文本字符串S中单词W的出现情况:发生不匹配,从而绕过了先前匹配字符的重新检查。 这使得KMP可以更好地针对ACTGT等小型设备进行优化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM