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

Новости

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

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

Рыболовные магазины
В данном разделе представлена информация по всем компаниям Барнаула вида деятельности: рыболовные магазины, которые занимаются продажей товаров для рыбалки, в том числе:

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

MONEYVEO – мгновенный кредит онлайн
Так уж устроен наш лучший из миров, что в жизни без наличия денег просто - напросто невозможно обойтись ни одному живому человеку. Сегодняшнее положение дел сложилось на протяжении веков и тысячелетий

Бизнес тренинги
Практически все бизнес-тренеры или основанные ими компании используют одну из двух стратегий. Первая из них включает в себя продажу своей экспертизы. Наставники в этом случае являются самыми настоящими

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

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

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

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

Официальный сайт VALUE в России
Современные технологии совершили настоящую революцию практически во всех сферах человеческой жизнедеятельности. Множество разного рода устройств и разнообразного оборудования позволяют в значительной

*/?>



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

Все тренинги 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