Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
13 слайдов
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
231.50 kB
Просмотров:
61
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Суффиксные массивы](/documents_6/17891e5694bf31ac7ef1471f9a367f73/img0.jpg)
Содержание слайда: Суффиксные массивы
№2 слайд![Суффиксные массивы Пусть](/documents_6/17891e5694bf31ac7ef1471f9a367f73/img1.jpg)
Содержание слайда: Суффиксные массивы
Пусть задан текст T длины m.
Нужно так подготовить текст T, чтобы за минимальное время находить вхождения образца Pдлины n в текст T
№3 слайд![Суффиксные массивы . В году](/documents_6/17891e5694bf31ac7ef1471f9a367f73/img2.jpg)
Содержание слайда: Суффиксные массивы
. В 1993 году Манбер (Manber U.) и Майерс (Myers G.) предложили для решения задачи о подстроке структуру, названную суффиксным массивом, которая достаточно рационально использует память и работает почти так же быстро, как суффиксные деревья(O(n) )
№4 слайд![Суффиксные массивы. Пусть](/documents_6/17891e5694bf31ac7ef1471f9a367f73/img3.jpg)
Содержание слайда: Суффиксные массивы.
Пусть задана m-символьная строка T.
Суффиксным массивом для T, обозначенным Pos, называется массив целых чисел от 1 до m, определяющих лексикографический порядок всех m суффиксов строки T.
№5 слайд![Пример суффиксов и](/documents_6/17891e5694bf31ac7ef1471f9a367f73/img4.jpg)
Содержание слайда: Пример суффиксов и суффиксного массива для строки «абракадабра».
№6 слайд![Суффиксный массив Суффиксный](/documents_6/17891e5694bf31ac7ef1471f9a367f73/img5.jpg)
Содержание слайда: Суффиксный массив
Суффиксный массиве Pos не занимает много памяти.
Огромный плюс суффиксных массивов — их размер в памяти определяется только размерами текста T и никак не зависит от его алфавита.
Суффиксный массив можно использовать для поиска всех вхождений в T образца P заO(n+log2m).
№7 слайд![Построение суффиксного](/documents_6/17891e5694bf31ac7ef1471f9a367f73/img6.jpg)
Содержание слайда: Построение суффиксного массива
Упорядочим суффиксы по первой букве и занесём результат в Pos.
Корзиной будем называть несколько соседних суффиксов с одинаковыми первыми буквами.
Сделаем разбиение на корзины мельче, пока количество корзин не совпадёт с длиной m строки T.
№8 слайд![Построение суффиксного](/documents_6/17891e5694bf31ac7ef1471f9a367f73/img7.jpg)
Содержание слайда: Построение суффиксного массива
Последний суффикс (он же — последний символ строки T) перенесём на первое место в своей корзине.
Далее сортируем в каждой корзине суффиксы по второму символу.
Обновляем разбиение на корзины: в каждой суффиксы, совпадающие по двум символам
Продолжаем процесс до получения полностью массива
№9 слайд![Поиск образца в строке с](/documents_6/17891e5694bf31ac7ef1471f9a367f73/img8.jpg)
Содержание слайда: Поиск образца в строке с помощью суффиксного массива
Если образец P входит в строку T, то он является префиксом какого-нибудь суффикса T.
. При этом все вхождения P в T, если они есть, в суффиксном массиве Pos будут находиться рядом.
Пример: образец «бра» находится в строке «абракадабра» начиная со второго и с девятого символа. «бра» — префикс 2-го и 9-го суффиксов слова «абракадабра», которые в суффиксном массиве Pos находятся рядом.
№10 слайд![Поиск образца в строке с](/documents_6/17891e5694bf31ac7ef1471f9a367f73/img9.jpg)
Содержание слайда: Поиск образца в строке с помощью суффиксного массива
Вхождения P в T находим двоичным поиском в упорядоченном массиве.
Проверяем Pos[m ⁄ 2]. Если суффикс Pos[m ⁄ 2] лексикографически меньше, то первая позиция, где P входит в T, должна быть в первой половине Pos. Если суффикс Pos[m ⁄ 2] лексикографически больше, чем P, то первая позиция, где P входит в T, должна быть во второй половине Pos. Далее аналогично ищем P в половине массива Pos. И так далее, пока не найдём (если такие существуют) наименьший и наибольшей индексы imin и imax такие, что образец P входит в текст T в позициях Pos[imin], Pos[imin+1], …, Pos[imax].
№11 слайд![Поиск образца в строке с](/documents_6/17891e5694bf31ac7ef1471f9a367f73/img10.jpg)
Содержание слайда: Поиск образца в строке с помощью суффиксного массива
При использовании двоичного поиска в массиве Pos все вхождения образца P в текст T могут быть найдены за время O(nlogm).
Для случайных строк метод работает за ожидаемое время, но на случай, если в T есть много длинных префиксов P, метод можно улучшить
№12 слайд![Поиск образца в строке с](/documents_6/17891e5694bf31ac7ef1471f9a367f73/img11.jpg)
Содержание слайда: Поиск образца в строке с помощью суффиксного массива
Простой ускоритель mlr
При двоичном поиске обозначим левую и правую границы текущего интервала поиска как L и R.
В начале работы поиска L = 1, R = m.
На каждой итерации лексикографически сравнивается образец P с суффиксом Pos[(L+R) ⁄ 2].
№13 слайд![Обозначим через l длину](/documents_6/17891e5694bf31ac7ef1471f9a367f73/img12.jpg)
Содержание слайда: Обозначим через l длину общего префикса Pos[L] и P, через r — длину общего префикса Pos[R] и P, а через mlr — минимум из l и r.
Значение mlr приходится поддерживать при двоичном поиске.
Зная значение mlr, мы можем ускорить лексикографическое сравнение P с Pos[(L+R) ⁄ 2], так как для любого числа i от L до R первые mlr символов в Pos[i] одинаковы и сравнение можно начинать не с начала, а с позиции mlr+1. Наихудшее время остаётся прежним — O(nlogm), однако Майерс и Манбер сообщают, что использование mlr дает O(n+logm).