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

Новости

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

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

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

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

Видеоуроки по основным предметам школьной
ВИДЕОУРОКИ по предметам школьной программы. Бесплатно и без рекламы. • Интернет-урок - 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