2.6 KiB
2.6 KiB
title | localeTitle |
---|---|
Rabin Karp Algorithm | Алгоритм Рабина Карпа |
Алгоритм Рабина-Карпа
- Алгоритм поиска / поиска строк, разработанный Майклом О. Рабиным и Ричардом М. Карпом.
- Использует метод хэширования и грубую силу для сравнения.
Важные условия
- pattern - строка, подлежащая поиску. Рассмотрим длину шаблона как M символов.
- текст - это весь текст, из которого следует искать шаблон. Рассмотрим длину текста как N символов.
Что такое сравнение грубой силы?
При сравнении грубой силы каждый символ шаблона сравнивается с каждым символом текста до тех пор, пока не будут найдены символы, не соответствующие символу.
Работа алгоритма Рабина-Карпа
- Рассчитать хэш-значение шаблона
- Рассчитать хэш-значение первых M символов текста
- Сравните оба значения хэша
- Если они не равны, вычислите хэш-значение для следующих M символов текста и сравните их снова.
- Если они равны, выполните сравнение грубой силы.
hash_p = hash value of pattern
hash_t = hash value of first M letters in body of text
do
if (hash_p == hash_t)
brute force comparison of pattern and selected section of text
hash_t= hash value of next section of text, one character over
while (end of text or brute force comparison == true)
Преимущество над алгоритмом наивного строкового соответствия
Этот метод приводит только к одному сравнению для каждой подпоследовательности текста, и грубая сила требуется только тогда, когда значения хэша совпадают.
Приложения
- Обнаружение плагиата