main page — CS 566 Efficient Algorithms
Unit 6: String Matching – What’s behind Ctrl+F?
This unit covers algorithms for exact string matching:
- terminology for strings
- string matching with determinstic finite automata
- Knuth-Morris-Pratt (KMP) algorithm
- Boyer-Moore (BM) algorithm
- Rabin-Karp (RK) algorithm
Learning outcomes
- Know and use typical notions for strings (substring, prefix, suffix, etc.).
- Understand principles and implementation of the KMP, BM, and RK algorithms.
- Know the performance characteristics of the KMP, BM, and RK algorithms.
- Be able to solve simple stringology problems using the KMP failure function.
Material
Further reading and sources
The naive string matching algorithm, string matching with automata and the Knuth-Morris-Pratt are discussed, e.g., in
The description of the Boyer-Moore algorithm follows our own algorithms textbook (in German):
The presentation of Rabin-Karp and the failure-link automaton is inspired by material prepared for the module