Вопросы

Набор для практики

Краткие итоги

Ключевые термины

Алгоритм Бойера и Мура – это алгоритм поиска подстроки в строке, при котором первоначально строится таблица смещений для искомой подстроки, проверка начинается с последнего символа подстроки после совмещения начала строки и подстроки.

Алгоритм Кнута, Морриса и Пратта – это алгоритм поиска подстроки в строке, при котором сдвиг подстроки выполняется на некоторое переменное количество символов.

Алгоритм прямого поиска – это алгоритм поиска подстроки в строке, при котором происходит посимвольное сравнение строки с подстрокой.

Алфавит – конечное множество символов

Длина строки – количество символов в строке

Подстрока – это последовательность подряд идущих символов в строке.

Префикс– это подстрока, начинающаяся с первого символа строки.

Строка – это последовательность символов.

Суффикс – это подстрока, заканчивающаяся на последний символ строки.

 

1.Задачи поиска слова в тексте используются в криптографии, различных разделах физики, сжатии данных, распознавании речи и других сферах человеческой деятельности.

2.Основная идея алгоритма прямым поиском заключается в посимвольном сравнении строки с подстрокой.

3.Алгоритм прямого поиска является малозатратным и не нуждается в предварительной обработке и в дополнительном пространстве.

4.Алгоритм Кнута, Морриса и Пратта основывается на том, что после частичного совпадения начальной части подстроки с соответствующими символами строки можно, вычислить сведения, с помощью которых быстро продвинуться по строке.

5.Трудоемкость алгоритма Кнута, Морриса и Пратта лучше, чем трудоемкость алгоритма прямого поиска.

6.Особенность алгоритма Бойера и Мура заключается в предварительных вычислениях над подстрокой с целью сравнения подстроки с исходной строкой, осуществляемой не во всех позициях.

7.Алгоритм Бойера и Мура оптимален в большинстве случаев, когда нет возможности провести предварительную обработку текста, в котором проводится поиск.

 

1. Приведите пример входных данных для реализации эффективного метода прямого поиска подстроки в строке.

2. Приведите пример строки, для которой поиск подстроки «aaabaaa» будет более эффективным, если делать его методом Кнута, Морриса и Пратта, чем, если делать его методом Бойера и Мура. И наоборот.

3. Объясните, как влияет размер таблицы кодов в алгоритме Бойера и Мура на скорость поиска.

4. За счет чего в алгоритме Бойера и Мура поиск оптимален в большинстве случаев?

5. Поясните влияние префикс-функции в алгоритме Кнута, Морриса и Пратта на организацию поиска подстроки в строке.