标签:car algo dong spl col mamicode 复杂 roc 出现
原文摘录:https://www.cnblogs.com/gaochundong/p/string_matching.html
上图的有效位移是3。
朴素算法(Naive Algorithm)、Rabin-Karp 算法、有限自动机算法(Finite Automation)、 Knuth-Morris-Pratt 算法(即 KMP Algorithm)、Boyer-Moore 算法、Simon 算法、Colussi 算法、Galil-Giancarlo 算法、Apostolico-Crochemore 算法、Horspool 算法和 Sunday 算法等。
字符串匹配算法通常分为2个步骤:预处理和匹配。算法的总运行时间是两者之和。
下文举例:
就是穷举法,枚举法,也叫暴力匹配。是最低效最原始的算法。特点:
方法是使用循环来检查是否在范围n-m+1中存在满足条件P[1..m] = T[s+1..s+m]的有效位移s。
伪代码:
Native_string_matcher(T, P) n <- length[T] m <- length[P] for s <- 0 to n - m do if P[1..m] = T[s+1..s+m] then print "Pattern occurs with shift"
这是对Pattern进行预处理的算法。
我的理解是:
P中是否有重复的字符串。对自身匹配,逐个位移,并记录位移后,能够匹配(重复)几个字符。然后在实际和其他文本进行匹配时,就可以利用已知的信息,减少重复比较。
标签:car algo dong spl col mamicode 复杂 roc 出现
原文地址:https://www.cnblogs.com/chentianwei/p/11665656.html