Презентация Поиск подстрок онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Поиск подстрок абсолютно бесплатно. Урок-презентация на эту тему содержит всего 57 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Поиск подстрок
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:57 слайдов
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:281.00 kB
- Просмотров:73
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№2 слайд
Содержание слайда: Определения
Алфавит – конечное множество символов.
Строка (слово) – это последовательность символов из некоторого алфавита. Длина строки – количество символов в строке.
X=x[1]x[2]...x[n] – строка длинной n, где x[i] – i-ый символ строки Х, принадлежащий алфавиту.
Строка, не содержащая ни одного символа, называется пустой.
№4 слайд
Содержание слайда: Постановка задачи
Есть образец и строка, надо определить индекс, начиная с которого образец содержится в строке. Если не содержится — вернуть индекс, который не может быть интерпретирован как позиция в строке (например, отрицательное число).
При необходимости отслеживать каждое вхождение образца в текст имеет смысл завести дополнительную функцию, вызываемую при каждом обнаружении образца.
№6 слайд
Содержание слайда: Простой алгоритм
Решение. Имеется примерно n (если быть точным, n-3) позиций, на которых может находиться искомая подстрока в исходной строке.
Для каждой из позиций можно проверить, действительно ли с нее начинается подстрока , сравнив четыре символа.
Но обычно слово x[1]..x[n] просматривается слева направо, до появления буквы 'a'. Как только она появилась, ищем за ней букву 'b', затем 'c', и, наконец, 'd'. Если ожидания оправдываются, то слово "abcd" обнаружено. Если же какая-то из нужных букв не появляется, начинаем поиск с новой позиции.
№24 слайд
Содержание слайда: Усовершенствованный алгоритм
Написать программу, которая ищет произвольный образец в произвольном слове. Это можно делать в два этапа:
1. сначала по образцу строится таблица переходов конечного автомата
2. читается входное слово и состояние преобразуется в соответствии с этой таблицей
№25 слайд
Содержание слайда: Алгоритм Кнута - Морриса – Пратта (КМП)
Работает за время O(m+n), где m – длина образца, n – длина текста
Для произвольного слова X рассмотрим все его начала (префиксы), одновременно являющиеся его концами (суффиксами), и выберем из них самое длинное
Примеры: l(aba)=a, l(abab)=ab, l(ababa)=aba, l(abc) = пустое слово.
№26 слайд
Содержание слайда: КМП
Длина наиболее длинного префикса, являющегося одновременно суффиксом есть префикс-функция от строки.
Префикс –функция заданного образца несет информацию о том, где в образце повторно встречаются различные префиксы образца. Использование этой информации позволяет избежать проверки заведомо недопустимых сдвигов.
№27 слайд
Содержание слайда: π-функция
Алгоритм вычисления
Символы строк нумеруются с 1.
Пусть π(S,i) = k. Попробуем вычислить префикс-функцию для i + 1.
Если S[i + 1] = S[k + 1], то, естественно, π(S,i + 1) = k + 1. Если нет — пробуем меньшие суффиксы. Очевидно, что также будет суффиксом строки, а для любого строка суффиксом не будет. Таким образом, получается алгоритм:
№29 слайд
Содержание слайда: Пример
Для строки 'abcdabscabcdabia' вычисление будет таким:
'a'!='b' => π=0;(длина строки 2; строка ab )
'a'!='c' => π=0; (длина строки 3; строка abс )
'a'!='d' => π=0;(длина строки 4; строка abcd)
'a'=='a' => π=π+1=1; (длина строки 5; строка abcdа)
'b'=='b' => π=π+1=2;(длина строки 6; строка abcdаb)
'c'!='s' => π=0; (длина строки 6; строка abcdаbs)
'a'!='c' => π=0; (длина строки 7; строка abcdаbsс)
№30 слайд
Содержание слайда: Пример
'a'=='a' => π=π+1=1; (длина строки 8; строка abcdаbsса)
'b'=='b' => π=π+1=2; (длина строки 9; строка abcdаbsсаb)
'c'=='c' => π=π+1=3; (длина строки 9; строка abcdаbsсаbс)
'd'=='d' => π=π+1=4;(длина строки 10; строка abcdаbsсаbсd)
'a'=='a' => π=π+1=5; (длина строки 10; строка abcdаbsсаbсdа)
'b'=='b' => π=π+1=6; (длина строки 11; строка abcdаbsсаbсdаb)
‘s'!='i' => π=0; (длина строки 12; строка abcdаbsсаbсdаbi)
'a'=='a' => π=π+1=1; (длина строки 13; строка abcdаbsсаbсdаbiа)
№32 слайд
Содержание слайда: Алгоритм КМП-поиска
После частичного совпадения начальной части образца W с соответствующими символами строки Т фактически известна пройденная часть строки и можно «вычислить» некоторые сведения (на основе самого образа W), с помощью которых далее быстро продвинемся по тексту.
№34 слайд
Содержание слайда: Z- функция
Пусть ищется строка S1 в строке S2. Построим строку S= S1$S2, где $ — символ, не встречающийся ни в S1, ни в S2. Далее вычислим значения префикс-функции от строки S и всех её префиксов. Теперь, если префикс-функция от префикса строки S длины i равна n, где n—длина S1, и i>n, то в строке S2есть вхождение S1, начиная с позиции i-2n.
№35 слайд
Содержание слайда: Алгоритм поиска строки Бойера —Мура
Был разработан Робертом Бойером и и Джеем Муром в 1977г.
Считается наиболее быстрым среди алгоритмов общего назначения, предназначенных для поиска подстроки в строке.
Общая оценка вычислительной сложности алгоритма О(длтекста+длобразца+мощню алф)
№37 слайд
Содержание слайда: Сканирование слева направо, сравнение справа налево.
Совмещается начало текста (строки) и шаблона, проверка начинается с последнего символа шаблона. Если символы совпадают, производится сравнение предпоследнего символа шаблона и т. д. Если все символы шаблона совпали с символами строки, значит, подстрока найдена, и поиск окончен.
№38 слайд
Содержание слайда: Сканирование слева направо, сравнение справа налево
Если какой-то символ шаблона не совпадает с соответствующим символом строки, шаблон сдвигается на несколько символов вправо, и проверка снова начинается с последнего символа.
Количество символов, на которые выполняется сдвиг, вычисляется по двум эвристикам
№41 слайд
Содержание слайда: Эвристика стоп-символа.
Если стоп-символ «к» оказался за другой буквой «к», эвристика стоп-символа не работает
Строка: * * * * к к о л * * * * *
Шаблон: к о л о к о л
Следующий шаг: к о л о к о л ?????
В таких ситуациях выручает третья идея алгоритма— эвристика совпавшего суффикса.
№45 слайд
Содержание слайда: Таблица стоп-символов
образец =«abcdadcd»
Символ a b c d [остальные]
Последняя позиция 5 2 7 6 0
Обратите внимание, для стоп-символа «d» последняя позиция будет 6, а не 8 — последняя буква не учитывается
При несовпадении в позиции i по стоп-символу c, сдвиг будет i-StopTable[c].
№49 слайд
Содержание слайда: Быстрый алгоритм вычисления таблицы суффиксов
Использует префикс-функцию строки
m = length(suff)
pi[] = префикс-функция(suff)
pi1[] = префикс-функция(обращение(suff))
for j=0..m
suffshift[j] = m - pi[m]
for i=1..m
j = m - pi1[i]
suffshift[j] = min(suffshift[j], i - pi1[i])
№52 слайд
Содержание слайда: Пример работы алгоритма БМ
Накладываем образец на строку.
abeccaabadbabbad
abbad
Совпадения суффикса нет — таблица суффиксов даёт сдвиг на одну позицию. Для несовпавшего символа исходной строки «с» (5-я позиция) в таблице стоп-символов записан 0. Сдвигаем образец вправо на 5-0=5 позиций
№55 слайд
Содержание слайда: Алгоритм Бойера-Мура
Достоинства
Алгоритм Бойера-Мура на «хороших» данных очень быстр, а вероятность появления «плохих» данных крайне мала. Поэтому он оптимален в большинстве случаев, когда нет возможности провести предварительную обработку текста
На коротких текстах выигрыш не оправдывает предварительных вычислений.
№56 слайд
Содержание слайда: Алгоритм Бойера-Мура
Недостатки
не расширяются до приблизительного поиска, поиска любой строки из нескольких.
Не рекомендуют использовать алгоритм, если текст изменяется редко.
На больших алфавитах таблица стоп-символов может занимать много памяти. В таких используют спец. методы хранения таблиц
Скачать все slide презентации Поиск подстрок одним архивом:
-
Алгоритм Рабина - Карпа. Поиск подстрок сдвигом
-
Алгоритмы поиска подстроки в строке
-
Разработка и реализация алгоритма создания и балансировки двоичного дерева поиска со взвешенными узлами
-
Сбалансированное дерево двоичного поиска. АВЛ-дерево, красно-чёрное дерево
-
Двоичный поиск в упорядоченном массиве
-
Бинарный поиск
-
Разборы задач 3 - бинарный поиск и перебор
-
Алгоритмы и структуры данных. Поиск. Тема 08
-
Поиск максимума. Схема алгоритма
-
Методы поиска экстремума