ycliper

Популярное

Музыка Кино и Анимация Автомобили Животные Спорт Путешествия Игры Юмор

Интересные видео

2025 Сериалы Трейлеры Новости Как сделать Видеоуроки Diy своими руками

Топ запросов

смотреть а4 schoolboy runaway турецкий сериал смотреть мультфильмы эдисон
Скачать

Алгоритм поиска строк Кнута Морриса Пратта (KMP) — руководство с функцией отказа на Java

Автор: Stable Sort

Загружено: 2020-04-11

Просмотров: 59996

Описание: В этом руководстве объясняется, как работает алгоритм сопоставления с образцом Кнута-Морриса-Пратта (KMP). Для наглядной визуализации базовой концепции используются анимированные примеры. Затем обсуждается исходный код реализации, написанной на Java, и её время выполнения.

Алгоритм состоит из двух частей. Первая часть создаёт «функцию отказа», которая представляет собой массив, содержащий самые длинные префиксы, встречающиеся в строке шаблона. Основной алгоритм использует этот массив длин префиксов для вычисления смещения строки шаблона вперёд.

Исходный код, написанный на Java:
https://bitbucket.org/StableSort/play...

Реализация основана на псевдокоде, взятом из Википедии:
https://en.wikipedia.org/wiki/Knuth%E...

БЫСТРОЕ СОПОСТАВЛЕНИЕ С ОБРАЗЦОМ В СТРОКАХ
ДОНАЛЬД Э. КНУТ, ДЖЕЙМС Х. МОРРИС-МЛАДШИЙ И ВОН Р. ПРАТТ
https://pdfs.semanticscholar.org/4479...

Автор и озвучка: Андре Виолентьев

-------------------------------------------------------------------------------------------------------------------------------------------------------------
Опечатка (благодаря @Achyut Sapkota):
Моя анимация на 6:04 должна была сместиться не на 2, а на 3 символа. Кстати, в этом месте мы также увеличили бы указатель в тексте до следующего символа. Исходный код (см. выше) верен — как только мы достигаем нулевого индекса массива prefixLen, в котором хранится -1, мы увеличиваем указатели как текста, так и строки шаблона:
p = prefixLen[p];
if (p 'less than' 0) {
t++;
p++;
}
В приведённом выше примере при сдвиге на 3 символа мы фактически выходим за пределы строки шаблона. На иллюстрациях показано, что первый символ, «a», находится на индексе 1 массива prefixLen (а не на индексе 0, что, вероятно, и вызывает путаницу, поскольку в большинстве языков программирования индексация строк начинается с 0). Итак, формула работает, просто при обнаружении выхода за пределы строки мы сбрасываем указатель строки шаблона на первый символ и увеличиваем указатель текста на 1. Другими словами, мы сдвигаем строку шаблона так, чтобы её первый символ совпадал со следующим символом в тексте. Это гарантирует, что каждый символ в тексте будет прочитан не более двух раз.

Не удается загрузить Youtube-плеер. Проверьте блокировку Youtube в вашей сети.
Повторяем попытку...
Алгоритм поиска строк Кнута Морриса Пратта (KMP) — руководство с функцией отказа на Java

Поделиться в:

Доступные форматы для скачивания:

Скачать видео

  • Информация по загрузке:

Скачать аудио

Похожие видео

Knuth–Morris–Pratt KMP - Find the Index of the First Occurrence in a String - Leetcode 28 - Python

Knuth–Morris–Pratt KMP - Find the Index of the First Occurrence in a String - Leetcode 28 - Python

#1. Алгоритм Кнута-Морриса-Пратта (КМП-алгоритм) | Алгоритмы на Python

#1. Алгоритм Кнута-Морриса-Пратта (КМП-алгоритм) | Алгоритмы на Python

Rolling Hash Function Tutorial, used by Rabin-Karp String Searching Algorithm

Rolling Hash Function Tutorial, used by Rabin-Karp String Searching Algorithm

Алгоритм выпуклой оболочки — учебник по сканированию Грэма и алгоритму Джарвиса Марча

Алгоритм выпуклой оболочки — учебник по сканированию Грэма и алгоритму Джарвиса Марча

Knuth–Morris–Pratt (KMP) Pattern Matching Substring Search -  First Occurrence Of Substring

Knuth–Morris–Pratt (KMP) Pattern Matching Substring Search - First Occurrence Of Substring

1-я теорема Гёделя о неполноте - доказательство диагонализацией

1-я теорема Гёделя о неполноте - доказательство диагонализацией

Понимание B-деревьев: структура данных, лежащая в основе современных баз данных

Понимание B-деревьев: структура данных, лежащая в основе современных баз данных

9.1 Knuth-Morris-Pratt KMP String Matching Algorithm

9.1 Knuth-Morris-Pratt KMP String Matching Algorithm

Редакция Live: Москва без интернета, aмериканский AI против Ирана, «Возьми телефон, детка»

Редакция Live: Москва без интернета, aмериканский AI против Ирана, «Возьми телефон, детка»

Knuth-Morris-Pratt algorithm (KMP) - Inside code

Knuth-Morris-Pratt algorithm (KMP) - Inside code

CI/CD — Простым языком на понятном примере

CI/CD — Простым языком на понятном примере

Дерево Фенвика (двоичное индексное дерево) — краткое руководство и объяснение исходного кода

Дерево Фенвика (двоичное индексное дерево) — краткое руководство и объяснение исходного кода

0/1 Knapsack Problem Using Dynamic Programming - Tutorial & Source Code

0/1 Knapsack Problem Using Dynamic Programming - Tutorial & Source Code

Война на истощение между Ираном, Израилем и союзниками США

Война на истощение между Ираном, Израилем и союзниками США

5 простых шагов для решения любой рекурсивной задачи

5 простых шагов для решения любой рекурсивной задачи

Dijkstra's Algorithm - Computerphile

Dijkstra's Algorithm - Computerphile

Top 5 Dynamic Programming Patterns for Coding Interviews - For Beginners

Top 5 Dynamic Programming Patterns for Coding Interviews - For Beginners

N Coins in a Row Game (Pots of Gold interview problem) optimal solution in O(n)

N Coins in a Row Game (Pots of Gold interview problem) optimal solution in O(n)

Knuth-Morris-Pratt (KMP) Algorithm FULLY Explained [With Animation]

Knuth-Morris-Pratt (KMP) Algorithm FULLY Explained [With Animation]

Nginx — Простым языком на понятном примере

Nginx — Простым языком на понятном примере

© 2025 ycliper. Все права защищены.



  • Контакты
  • О нас
  • Политика конфиденциальности



Контакты для правообладателей: [email protected]