Алгоритм Кнута-Морриса-Пратта: Быстрый поиск в тексте
Задача поиска слова (паттерна) внутри большого текста (строки) — одна из самых частых в компьютерных науках. Наивный алгоритм, который мы бы написали интуитивно, прикладывает паттерн к началу текста, сравнивает символы, и при несовпадении сдвигает паттерн ровно на одну позицию вправо, начиная проверку с нуля. В худшем случае (например, поиск паттерна "ААААВ" в строке "АААААААААВ") этот метод работает за время O(N*M), что неприемлемо. Алгоритм КМП решает эту проблему за строго линейное время O(N+M).