Алгоритм Бойера-Мура-Хорспула

  Рет қаралды 27,774

Roman Tsarev

Roman Tsarev

Күн бұрын

Пікірлер: 56
@ПетроваНаталья-с3п
@ПетроваНаталья-с3п Жыл бұрын
Спасибо большое! Самое ясное объяснение данного алгоритма)
@romantsarev1145
@romantsarev1145 Жыл бұрын
Пожалуйста!
@ВикторияБондаренко-т6г
@ВикторияБондаренко-т6г 4 жыл бұрын
Большое спасибо!!! Просто, наглядно и понятно! Ваше видео очень помогло, наконец-то написала нормальный рабочий алгоритм поиска))
@romantsarev1145
@romantsarev1145 4 жыл бұрын
Пожалуйста! Ставьте лайк, подписывайтесь на канал )
@МаксимГлотов-р8к
@МаксимГлотов-р8к 6 жыл бұрын
Роман, спасибо вам за такое понятное объяснение, благодаря вашим видео я наконец разобрался с такими алг как этот и КМП
@romantsarev1145
@romantsarev1145 6 жыл бұрын
Пожалуйста.
@Rivrabobra
@Rivrabobra 5 жыл бұрын
Вы отлично объясняете. Спасибо!
@romantsarev1145
@romantsarev1145 5 жыл бұрын
Спасибо за лестную оценку.
@rajahbtw
@rajahbtw 2 жыл бұрын
Спасибо большое, помогло
@romantsarev1145
@romantsarev1145 2 жыл бұрын
Пожалуйста!
@ТимофейПшеничный
@ТимофейПшеничный 3 жыл бұрын
Спасибо! Очень понятно!
@romantsarev1145
@romantsarev1145 3 жыл бұрын
Пожалуйста!
@veronikabykova5494
@veronikabykova5494 6 жыл бұрын
большое спасибо! теперь все точно уложилось в голове))
@romantsarev1145
@romantsarev1145 6 жыл бұрын
Пожалуйста.
@veronikabykova5494
@veronikabykova5494 6 жыл бұрын
Можно вопрос, а не нужно удалять пробелы, прежде чем применять алгоритм? То есть возможен вариант, когда сдвиг слова по таблице смещений поставит его так, что последний символ образа будет сравниваться с пробелом - что в таком случае?
@romantsarev1145
@romantsarev1145 6 жыл бұрын
Прекрасный вопрос! Для ответа на него рассмотрим программную реализацию. При формировании массива d я использовал таблицу ASCII (11:50). Если взглянуть на нее, то можно увидеть, что пробел имеет код 32. То есть для ЭВМ пробел - это такой же символ как и любая буква, цифра, знак препинания (которые, естественно, имеют свои коды). Так что пробелы предварительно удалять не нужно. Более того, образ может быть не отдельным словом, а фразой и, конечно, будет содержать пробелы, которые тоже удалять не нужно.
@АлёнаКоломийцева-п2о
@АлёнаКоломийцева-п2о 3 жыл бұрын
Суупер! Спасибо😊 очень понятно и наглядно)
@romantsarev1145
@romantsarev1145 7 ай бұрын
Пожалуйста
@БахтиярТутенов-щ8ц
@БахтиярТутенов-щ8ц 7 жыл бұрын
Крутое видео! А то читаешь и ничего не понимаешь))
@RedPixel-j1e
@RedPixel-j1e 4 жыл бұрын
Супер! Спасибо!
@romantsarev1145
@romantsarev1145 4 жыл бұрын
Пожалуйста!
@Federation1323
@Federation1323 3 жыл бұрын
выглядит как какая-то магия)))
@romantsarev1145
@romantsarev1145 Жыл бұрын
Это она и есть
@nicivanov5135
@nicivanov5135 3 жыл бұрын
Подскажите, алгоритм sha 256 тоже на сдвиге работает или другие алгоритмы использует? Нужно понять сам принцып работы hashlib.
@romantsarev1145
@romantsarev1145 3 жыл бұрын
Я не в курсе, если честно
@nicivanov5135
@nicivanov5135 3 жыл бұрын
@@romantsarev1145 kzbin.info/www/bejne/o5PInIBoetd7nK8
@yuriysosnovskiy2118
@yuriysosnovskiy2118 3 жыл бұрын
На сколько нужно сдвигать индекс при нахождении элемента, если нужно найти несколько вхождений?
@romantsarev1145
@romantsarev1145 3 жыл бұрын
Все зависит от Вашей постановки задачи. Если Вы считаете, что в строку "аааа" образ "аа" входит три раза, тогда на один символ. А, если входит два раза, тогда начинайте с символа, который стоит сразу за совпавшей частью строки и образа. В целом, алгоритм ищет первое совпадение образа и строки, остальное на усмотрение программиста.
@yuriysosnovskiy2118
@yuriysosnovskiy2118 3 жыл бұрын
@@romantsarev1145 я увеличивал индекс і (тот, который идёт по строке) на значение из таблицы сдвигов последнего совпавшего символа. Вроде работает нормально.
@zedoo5699
@zedoo5699 6 жыл бұрын
Спасибо, но кое что очень странно. В первом примере ты считаешь смещение относительно символов с строке, а во втором примере относительно образа
@romantsarev1145
@romantsarev1145 6 жыл бұрын
Если при сравнении последнего символа образа и символа строки произошло несовпадение, то определяем сдвиг по символу строки (6:59); если же несовпадение произошло после того, как совпал ряд символов строки и образа, то сдвиг будет равен d, соответствующий последнему символу образа (9:17).
@zedoo5699
@zedoo5699 6 жыл бұрын
Roman Tsarev сэнкс
@zedoo5699
@zedoo5699 6 жыл бұрын
Roman Tsarev не знаю, почему то прозевал момент, когда вы рассказали об этом в видео
@qvv3r7y77
@qvv3r7y77 6 жыл бұрын
Не совсем ясно зачем делить алгоритм на два случая. Вы говорите, что во втором случае нужно смотреть на последний символ образа, но ведь у нас было совпадение, т.е этот символ равен последнему символу строки. И выходит, что в любом случае мы сдвигаемся на d = последнему символу строки. Поправьте, если где-то ошибаюсь
@par9325
@par9325 2 жыл бұрын
@@romantsarev1145 вот оно как. спасибо за уточнение
@АлександрШеремет-я7е
@АлександрШеремет-я7е Жыл бұрын
Если несовпадающий символ не самый правый/последний в образе то 1. У вас: смещение берём по последнему символк образа 2. Вот тут kzbin.info/www/bejne/oae6d3SQrL-Sbrc : по несовпадающему символу образа 3. А вот тут kzbin.info/www/bejne/hGeqZ3uMrK9nrbM : по несовпадающему символу СТРОКИ Почему такие разночтения ?
@romantsarev1145
@romantsarev1145 Жыл бұрын
Я от оригинальной статьи авторов алгоритма отталкивался. Про авторов других видео не скажу.
@АлександрШеремет-я7е
@АлександрШеремет-я7е Жыл бұрын
@@romantsarev1145 можете ссылку дать ?
@СергейСвердлов-у4в
@СергейСвердлов-у4в 4 жыл бұрын
Все сдвиги надо увеличить на 1. И выбирать сдвиг по следующему за концом образца символу строки.
@romantsarev1145
@romantsarev1145 4 жыл бұрын
Почему?
@СергейСвердлов-у4в
@СергейСвердлов-у4в 4 жыл бұрын
Потому что сдвиги будут больше и не надо будет мудрить с последним символом образца.
@romantsarev1145
@romantsarev1145 4 жыл бұрын
При больших сдвигах важно мимо вхождения образа не проскочить. Не случится ли такого?
@СергейСвердлов-у4в
@СергейСвердлов-у4в 4 жыл бұрын
@@romantsarev1145 Не случится
@romantsarev1145
@romantsarev1145 4 жыл бұрын
@@СергейСвердлов-у4в Супер, если так!
@valera16011990
@valera16011990 5 жыл бұрын
Непонятно зачем в примере с метадата выносить как отдельный случай, можно обобщить, в случае несовпададеня образца и подстроки, смещение по самому правому элементу подсторки Аналогично с последний буквой образца, достаточно сказать что при создании таблицы сдвигов это последний элемент(несчитая "прочие") для которого мы создаем А так спасибо)
@romantsarev1145
@romantsarev1145 5 жыл бұрын
Для наглядности. Пожалуйста.
@milhot
@milhot 2 жыл бұрын
автор живёт рядом с жд (просто факт)
@romantsarev1145
@romantsarev1145 2 жыл бұрын
😂
@sominite
@sominite 4 жыл бұрын
9:08 фотошоп
@romantsarev1145
@romantsarev1145 4 жыл бұрын
В каком смысле? А так, все сделано в Power Point
@sominite
@sominite 4 жыл бұрын
@@romantsarev1145 ошибся
@alexanderginger754
@alexanderginger754 3 жыл бұрын
Ору, в случае когда нет ряда совпадений, сдвигаем по последнему символу строки, а если есть ряд совпадений, то сдвигаем по последнему символу образа, который РАВЕН последнему символу строки 👍👍👍 А можно хотя бы разобраться в алгоритме прежде чем записывать видео?))))
@romantsarev1145
@romantsarev1145 3 жыл бұрын
Не ори, все там правильно. Давай временную метку, поясню, что там у тебя не сходится.
@romantsarev1145
@romantsarev1145 3 жыл бұрын
Не стал дожидаться ответа, раз у тебя возник такой вопрос, возможно и у других он появится. Первый случай 6:58 При несовпадении символ в строке «н», символ в образе «е» сдвиг определяем по символу строки «н». Второй случай 9:23 При несовпадении символ в строке «е», символ в образе «а» сдвиг определяем по последнему символу образа «а». В твоем комментарии-вопросе два существенных косяка: «Ору, в случае когда нет ряда совпадений, сдвигаем по последнему символу строки…». Не по ПОСЛЕДНЕМУ символу строки, а по ТЕКУЩЕМУ символу строки; «…, а если есть ряд совпадений, то сдвигаем по последнему символу образа, который РАВЕН последнему символу строки». Да, сдвигаем по последнему символу образа, он точно НЕ РАВЕН текущему символу строки, а равен он ПОСЛЕДНЕМУ символу строки или нет, нас не интересует. Нас вообще никогда не интересует ПОСЛЕДНИЙ символ строки. На последней итерации у него есть шанс стать текущим, но и тогда нам все равно последний он или нет, рассматриваем его так же, как рассматривали остальные символы строки до этого. Как ты вообще видео смотрел?!
@OneOfWun-n2g
@OneOfWun-n2g 3 жыл бұрын
@@romantsarev1145 у него аниме на аватарке, все нормально
Ford-Fulkerson algorithm
25:39
Roman Tsarev
Рет қаралды 67 М.
ЗНАЛИ? ТОЛЬКО ОАЭ 🤫
00:13
Сам себе сушист
Рет қаралды 3,8 МЛН
Sigma baby, you've conquered soap! 😲😮‍💨 LeoNata family #shorts
00:37
Family Love #funny #sigma
00:16
CRAZY GREAPA
Рет қаралды 20 МЛН
啊?就这么水灵灵的穿上了?
00:18
一航1
Рет қаралды 106 МЛН
Kruskal's algorithm
6:30
Roman Tsarev
Рет қаралды 47 М.
Алгоритм Кнута-Морриса-Пратта
25:44
Roman Tsarev
Рет қаралды 75 М.
Идея алгоритма Флойда-Уоршелла
12:20
Олимпиадное программирование в УлГТУ
Рет қаралды 4,7 М.
Boyer Moore Horspool Algorithm
6:40
Mike Slade
Рет қаралды 165 М.
Алгоритмы. База для собесов и жизни
41:26
Михаил Киселев
Рет қаралды 7 М.
Алгоритм Прима
5:39
Roman Tsarev
Рет қаралды 60 М.
ЗНАЛИ? ТОЛЬКО ОАЭ 🤫
00:13
Сам себе сушист
Рет қаралды 3,8 МЛН