По-другому
Санкт-Петербург Тюмень Казань Южно-сахалинск

Новости

Где купить гибкий штатив для фотоаппарата

Вечная дилемма что подарить мужу на день рождение. Каждый год одно и тоже. Но потом меня осинило, он у меня любитель снимать видео, фотографировать. Не столько себя как окружающих. Только вот не

Таможенные перевозки перевозки и таможенное оформление
таможенные перевозки перевозки и таможенное оформление

Профессиональные бизнес тренинги
Тысяча долларов прибыли в день на человека? Неплохая рентабельность. Примерно такими соображениями руководствуются те, кто открывает свои тренинговые компании. Однако большинство тренинговых компаний

Видеоуроки по основным предметам школьной
ВИДЕОУРОКИ по предметам школьной программы. Бесплатно и без рекламы. • Интернет-урок - http://interneturok.ru — видеоуроки по основным школьным предметам за 1-11 классы в открытом доступе.

Битбокс обучение на русском языке видео
Вы знаете что такое битбокс? А ведь им может заниматься кто угодно и даже вы. Единственное, что вам для этого понадобиться это ваш рот, ну и микрофон тоже не будет лишним. Первыми битбоксерами были французские

Заполнение таможенной декларации на товары заполнение гтд по импорту
заполнение таможенной декларации на товары заполнение гтд по импорту

Массаж простаты видеоурок
Вместе с врачом можно определить границы ощущений, понять, какие чувства говорят о том, что массаж нужно прекращать, а какие вполне допустимы во время процесса. Еще специалист подскажет, какими инструментами

Обучение макияжу в Киеве
Следуя советам по нанесению макияжа, можно создать как естественный образ на каждый день, так и смелый – он нужен в тех случаях, когда Вам предстоит посещение мероприятия. Прежде чем наносить макияж

Тренинги по продажам
Для чего нужны тренинги по продажам Профессиональные продажи предполагают комплексный подход – с ощущением безопасности, комфорта и удобства сотрудничестве, с уверенностью клиента в прибыли и актуальности

Почитать отзывы реальных людей
Топовые комментаторы зарабатывают 150-300 тысяч рублей, а для вывода средств достаточно накопить всего лишь 100 рублей. Qcomment — изначально создавался для написания комментариев, но уже несколько

*/?>



Сделано в Сибири

Все тренинги on-line

Реализация алгоритма Рабина-Карпа на C++

Опубликовано: 06.10.2017

Приветствую вас, друзья мои! Сейчас я расскажу о своей первой курсовой работе, которая была написана и сдана на далеком втором курсе. Суть заключается в реализации и тестировании алгоритма Рабина-Карпа поиска подстроки в строке, в качестве языка программирования мне был рекомендован C++. В принципе больше во вступлении добавить нечего, перейдем сразу к делу.

Суть алгоритма Рабина-Карпа

Алгоритм представляет из себя улучшенную версию последовательного поиска, улучшение заключается в использовании хэш-функции. Это объясняется тем, что сравнить два числа(два хэша) гораздо быстрее и дешевле, чем сравнивать подстроки посимвольно. Сравнивать подстроки придется только один раз, когда хэши совпали, сделать это придется для увеличения надежности и защиты от случая коллизии хэша.

Для алгоритма Рабина-Карпа принято использовать так называемый кольцевой хэш . Его преимущество в том, что хэш следующей подстроки в тексте будет напрямую зависеть от хэша предыдущей. Поэтому мы сможем очень дешево двигаться по тексту и пересчитывать хэши.

Формула хэша подстроки

H = C 1 ­­h k-1 + C 2 h k-2 + … + C k h 0

где C1 … Ck входные символы, h константа. Удаление символов из подстроки и добавление новых производится путем вычитания последнего члена формулы и добавлением первого соответственно.

Конечно, можно использовать любой другой хэш, не обязательно кольцевой. Кроме того, именно сравнение скорости работы при разных хэш-функциях и было целью моей курсовой. Я пробовал adler32 и функцию Дженкинса, обе показали гораздо более медленный результат, чем кольцевая функция.



rss