常见字符串匹配算法
更新时间 2021-07-21 18:27:18    浏览 0   

TIP

本文主要是介绍 常见字符串匹配算法 。

# 字符串匹配算法]

# 字符串匹配问题的形式定义:

  • **文本(Text)**是一个长度为 n 的数组 T[1..n];
  • **模式(Pattern)**是一个长度为 m 且 m≤n 的数组 P[1..m];
  • T 和 P 中的元素都属于有限的字母表 Σ 表
  • 如果 0≤s≤n-m,并且 T[s+1..s+m] = P[1..m],即对 1≤j≤m,有 T[s+j] = P[j],则说模式 P 在文本 T 中出现且位移为 s,且称 s 是一个有效位移(Valid Shift)
wxmp

比如上图中,目标是找出所有在文本 T = abcabaabcabac 中模式 P = abaa 的所有出现。该模式在此文本中仅出现一次,即在位移 s = 3 处,位移 s = 3 是有效位移。

# 解决字符串匹配的常用算法包括:

  • BF算法(Brute Force)
  • MP算法(Morris-Pratt)
  • KMP算法(Knuth-Morris-Pratt)
  • BM算法(Boyer-Moore)
  • BMH算法
  • Needleman–Wunsch算法
  • Trie 树(字典树)算法
  • AC自动机算法
  • RK(Rabin-Karp)算法

# 字符串匹配算法通常分为两个步骤:

预处理(Preprocessing)和匹配(Matching)。所以算法的总运行时间为预处理和匹配的时间的总和。

wxmp

# 参考文章

  • https://www.cnblogs.com/gaochundong/p/string_matching.html
  • https://www.cnblogs.com/magic-sea/tag/%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D%E7%AE%97%E6%B3%95/
更新时间: 2021-07-21 18:27:18
  0
手机看
公众号
讨论
左栏
全屏
上一篇
下一篇
扫一扫 手机阅读
可分享给好友和朋友圈