SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
Хакасский государственный университет им. Н.Ф. Катанова

     Структуры и алгоритмы обработки данных

           Лекция: Поиск подстрок.

       Николай Гребенщиков, www.grebenshikov.ru
Задачи на строках

Основное приложение: вычислительная молекулярная био-
логия (расшифровка ДНК).


 • Поиск внутренних паттернов. Например, построение пре-
   фиксного дерева.


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


 • Поиск характеристических паттернов. Например, поиск
   кратных подстрок.

                                                   1
Поиск подстрок

Дано: Текст в виде массива T [1..n] и образец в виде массива
P [1..m], где m ≤ n. Элементы массивов P и T - символы из
конечного алфавита Σ. Говорят, что P встречается в T со
сдвигом s, если 0 ≤ s ≤ n − m и T [s + 1..s + m] = P [1..m].

Найти: Все допустимые сдвиги с которыми образец P встре-
чается в тексте T .




                                                       2
Терминология

Σ∗ - множество всех строк конечной длины, образованных с
помощью символов алфавита Σ.

 - пустая строка.

xy - конкатенация двух строк.

w < x - w является префиксом строки x, то есть ∃y ∈ Σ∗, что
x = wy.

w = x - w является суффиксом строки x, то есть ∃y ∈ Σ∗,
что x = yw.
                                                      3
Лемма о перекрывающихся суффиксах

Пусть x, y, z - строки, для которых выполняются соотноше-
ния x = z и y = z.

Если |x| ≥ |y|, то x = y.

Если |x| ≤ |y|, то y = x.

Если |x| = |y|, то x = y.



                                                    4
Простейший алгоритм поиска подстрок


NaiveStringMatcher(T, P )
1   n ← length[T ]
2   m ← length[P ]
3   for s ← 0 to n − m
4         do if P [1..m] = T [s + 1..s + m]
5               then print(s)




                                              5
Простейший алгоритм поиска подстрок




                                      6
Анализ - простейшего алгоритма поиска подстрок

Наихудший случай: T = an, P = am

T (n) = Θ((n − m + 1)m)

При m = n/2 T (n) = Θ(n2)




                                                 7
Алгоритм Рабина-Карпа

Идея: использовать хэш-функцию опеределенную на множе-
стве строк.

h(S[1..k]) = (S[k] + d(S[k − 1] + . . . + d(S[2] + dS[1]) . . .))mod q,
где d - основание системы, q - модуль.




                                                                 8
Алгоритм Рабина-Карпа

h(P [1..m]) - хэш образца.

{s : h(P [1..m]) = h(T [s..s + m]) ∧ 0 ≥ s ≥ n − m} - множество до-
пустимых сдвигов.

Обозначим ts = h(T [s..s + m]),

тогда ts+1 = (d(ts − T [s + 1]g) + T [s + m + 1]) mod q,

где g ≡ dm−1(mod q)


                                                            9
Алгоритм Рабина-Карпа




                        10
Алгоритм Рабина-Карпа




                        11
Проблема алгоритма Рабина-Карпа

Из равества h(P ) = ts не следует, что P = T [s..s + m].

Решение проверить сдвиг s посимвольным сравнением.




                                                           12
13
Анализ алгоритма Рабина-Карпа

В наихудшем случае T (n, m) = Θ(m) + Θ((n − m + 1)m).

Почему?

В общем случае T (n, m) = O(n) + O(m(v + n/q)), где v - ко-
личество допустимых сдвигов и q - модуль хэш-функции.

Если v = O(1) ∧ q ≥ m ⇒ T (n, m) = O(m + n) = O(n), так как
n≥m


                                                      14
Конечные автоматы

M = (Q, q0, A, Σ, δ)

Q - конечное множество состояний,

q0 ∈ Q - начальное состояние,

A ⊆ Q - конечное множество допустимых состояний,

Σ - конечный входной алфавит,

δ - функция переходов Q × Σ → Q.

                                                   15
Конечные автоматы




φ - функция конечного состояния.

φ( ) = q0

φ(wa) = δ(φ(w), a) для w ∈ Σ∗, a ∈ Σ


                                       16
Конечный автомат для поиска подстрок

σ(x) = max{k : Pk = x}, где Pk < P ∧ |Pk | = k - суффиксная
функция

Пример, P = ab, σ( ) = 0, σ(ccaca) = 1, σ(ccab) = 2.

Правила построения автомата:


1. Q = {0, 1, . . . m}, q0 = 0, A = m


2. δ(q, a) = σ(Pq a)

                                                       17
Конечный автомат для образца P = ababaca




                                           18
Алгоритм поиска подстроки с помощью конечного ав-
томата




                                             19
Алгоритм вычисления функции переходов




                                        20
Анализ применения конечных автоматов для поиска под-
строки

Вычисление функции переходов - T (n, m) = O(m3|Σ|). Суще-
ствуют алгоритмы - T (n, m) = O(m|Σ|)

Поиск подстроки - T (n, m) = Θ(n)




                                                    21
На семинар и рефераты


 • Поиск наибольшей общей последовательности.


 • Алгоритмы поиска подстрок: Кнута-Морриса-Пратта, Бойера-
   Мура, Демелки-Бейза-Ятса-Гоннета, Бойера-Мура-Хоспула,
   Бойера-Мура-Санди, Бойера-Мура-Гелила.


 • Алгоритмы вычисления растояния ммежду строками: Вагнера-
   Фишера, Хешберга, Ханта-Шиманского, Укконена-Майерса.


                                                  22
На семинар и рефераты


 • Алгоритмы для поиска по регулярным выражениям.


 • Алгоритмы вычисления периодичности: Крочемора, Мейна-
   Лоренца, Колпакова-Кучерова.


 • Алгоритмы построения суффиксных деревьев: Укконена,
   Вайнера, Мак-Крейга.



                                                 23
Список литературы


 • Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит-
   мы: построение и анализ, 2-е издание. - М. : Издатель-
   ский дом “Вильямс”, 2007. сс.1017-1046.


 • Смит, Билл. Методы и алгоритмы вычислений на стро-
   ках. - М.: ООО “И.Д. Вильямс”, 2006.


 • Гасфилд, Дэн. Строки, деревья и последовательности в
   алгоритмах: Информатика и вычислительная биология. -
   СПб.: Невский Диалект; БХВ-Петербург, 2003.

                                                    24

Weitere ähnliche Inhalte

Was ist angesagt?

Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахromovpa
 
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Nikolay Grebenshikov
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовMikhail Kurnosov
 
Лекция 9: Графы. Поиск кратчайшего пути в графе
Лекция 9: Графы. Поиск кратчайшего пути в графеЛекция 9: Графы. Поиск кратчайшего пути в графе
Лекция 9: Графы. Поиск кратчайшего пути в графеMikhail Kurnosov
 
Лекция 9: Графы. Кратчайшие пути в графах
Лекция 9: Графы. Кратчайшие пути в графахЛекция 9: Графы. Кратчайшие пути в графах
Лекция 9: Графы. Кратчайшие пути в графахMikhail Kurnosov
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовMikhail Kurnosov
 
Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простомуNikolay Grebenshikov
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Nikolay Grebenshikov
 
Защита информации семинар №7
Защита информации семинар №7Защита информации семинар №7
Защита информации семинар №7Alexander Kolybelnikov
 
Opredelennyj integral
Opredelennyj integralOpredelennyj integral
Opredelennyj integralDimon4
 
20110313 systems of_typed_lambda_calculi_moskvin_lecture06
20110313 systems of_typed_lambda_calculi_moskvin_lecture0620110313 systems of_typed_lambda_calculi_moskvin_lecture06
20110313 systems of_typed_lambda_calculi_moskvin_lecture06Computer Science Club
 
Методы обучения линейных моделей
Методы обучения линейных моделейМетоды обучения линейных моделей
Методы обучения линейных моделейAlex
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Mikhail Kurnosov
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Mikhail Kurnosov
 
20081123 structuralcomplexitytheory lecture11-12
20081123 structuralcomplexitytheory lecture11-1220081123 structuralcomplexitytheory lecture11-12
20081123 structuralcomplexitytheory lecture11-12Computer Science Club
 
О-символика
О-символикаО-символика
О-символикаDEVTYPE
 
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовTheoretical mechanics department
 

Was ist angesagt? (20)

Метод конечных разностей
Метод конечных разностейМетод конечных разностей
Метод конечных разностей
 
Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системах
 
Funkciya y cos_ee_svojstva_i_grafik
Funkciya y cos_ee_svojstva_i_grafikFunkciya y cos_ee_svojstva_i_grafik
Funkciya y cos_ee_svojstva_i_grafik
 
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графов
 
Лекция 9: Графы. Поиск кратчайшего пути в графе
Лекция 9: Графы. Поиск кратчайшего пути в графеЛекция 9: Графы. Поиск кратчайшего пути в графе
Лекция 9: Графы. Поиск кратчайшего пути в графе
 
Лекция 9: Графы. Кратчайшие пути в графах
Лекция 9: Графы. Кратчайшие пути в графахЛекция 9: Графы. Кратчайшие пути в графах
Лекция 9: Графы. Кратчайшие пути в графах
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графов
 
Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простому
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
 
Защита информации семинар №7
Защита информации семинар №7Защита информации семинар №7
Защита информации семинар №7
 
Opredelennyj integral
Opredelennyj integralOpredelennyj integral
Opredelennyj integral
 
20110313 systems of_typed_lambda_calculi_moskvin_lecture06
20110313 systems of_typed_lambda_calculi_moskvin_lecture0620110313 systems of_typed_lambda_calculi_moskvin_lecture06
20110313 systems of_typed_lambda_calculi_moskvin_lecture06
 
Методы обучения линейных моделей
Методы обучения линейных моделейМетоды обучения линейных моделей
Методы обучения линейных моделей
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
 
20081123 structuralcomplexitytheory lecture11-12
20081123 structuralcomplexitytheory lecture11-1220081123 structuralcomplexitytheory lecture11-12
20081123 structuralcomplexitytheory lecture11-12
 
О-символика
О-символикаО-символика
О-символика
 
графы
графыграфы
графы
 
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементов
 

Ähnlich wie Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"

Лекция 15 Поиск подстрок
Лекция 15 Поиск подстрокЛекция 15 Поиск подстрок
Лекция 15 Поиск подстрокsimple_people
 
L5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыL5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыTechnosphere1
 
практика 11
практика 11практика 11
практика 11student_kai
 
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Nikolay Grebenshikov
 
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
20110306 systems of_typed_lambda_calculi_moskvin_lecture04
20110306 systems of_typed_lambda_calculi_moskvin_lecture0420110306 systems of_typed_lambda_calculi_moskvin_lecture04
20110306 systems of_typed_lambda_calculi_moskvin_lecture04Computer Science Club
 
20081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-0620081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-06Computer Science Club
 
Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1simple_people
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02Computer Science Club
 
Евгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в HaskellЕвгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в HaskellFProg
 
Лекция 16 Вычислительная геометрия
Лекция 16 Вычислительная геометрияЛекция 16 Вычислительная геометрия
Лекция 16 Вычислительная геометрияsimple_people
 
!Predictive analytics part_2
!Predictive analytics part_2!Predictive analytics part_2
!Predictive analytics part_2Vladimir Krylov
 
20110522 systems of typed lambda_calculi_moskvin_lecture12
20110522 systems of typed lambda_calculi_moskvin_lecture1220110522 systems of typed lambda_calculi_moskvin_lecture12
20110522 systems of typed lambda_calculi_moskvin_lecture12Computer Science Club
 
Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2simple_people
 
L2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибокL2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибокTechnosphere1
 
экспертные системы
экспертные системыэкспертные системы
экспертные системыsokol_klinik
 
Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Technosphere1
 

Ähnlich wie Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных" (20)

Лекция 15 Поиск подстрок
Лекция 15 Поиск подстрокЛекция 15 Поиск подстрок
Лекция 15 Поиск подстрок
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
 
L5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыL5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмы
 
лекция 10
лекция 10лекция 10
лекция 10
 
практика 11
практика 11практика 11
практика 11
 
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
 
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
 
20110306 systems of_typed_lambda_calculi_moskvin_lecture04
20110306 systems of_typed_lambda_calculi_moskvin_lecture0420110306 systems of_typed_lambda_calculi_moskvin_lecture04
20110306 systems of_typed_lambda_calculi_moskvin_lecture04
 
20081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-0620081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-06
 
Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02
 
Евгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в HaskellЕвгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в Haskell
 
Лекция 16 Вычислительная геометрия
Лекция 16 Вычислительная геометрияЛекция 16 Вычислительная геометрия
Лекция 16 Вычислительная геометрия
 
!Predictive analytics part_2
!Predictive analytics part_2!Predictive analytics part_2
!Predictive analytics part_2
 
20110522 systems of typed lambda_calculi_moskvin_lecture12
20110522 systems of typed lambda_calculi_moskvin_lecture1220110522 systems of typed lambda_calculi_moskvin_lecture12
20110522 systems of typed lambda_calculi_moskvin_lecture12
 
Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2
 
L2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибокL2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибок
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
экспертные системы
экспертные системыэкспертные системы
экспертные системы
 
Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes"
 

Mehr von Nikolay Grebenshikov

Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Nikolay Grebenshikov
 
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Nikolay Grebenshikov
 
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Nikolay Grebenshikov
 
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Nikolay Grebenshikov
 
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...Nikolay Grebenshikov
 
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Nikolay Grebenshikov
 
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Nikolay Grebenshikov
 
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 

Mehr von Nikolay Grebenshikov (10)

Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
 
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
 
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
 
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
 
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
 
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
 
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
 
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
 

Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"

  • 1. Хакасский государственный университет им. Н.Ф. Катанова Структуры и алгоритмы обработки данных Лекция: Поиск подстрок. Николай Гребенщиков, www.grebenshikov.ru
  • 2. Задачи на строках Основное приложение: вычислительная молекулярная био- логия (расшифровка ДНК). • Поиск внутренних паттернов. Например, построение пре- фиксного дерева. • Поиск частных паттернов. Например, поиск подстроки, растояния преобразования, наибольшей общей подпосле- довательности, совпадения с регулярным выражением. • Поиск характеристических паттернов. Например, поиск кратных подстрок. 1
  • 3. Поиск подстрок Дано: Текст в виде массива T [1..n] и образец в виде массива P [1..m], где m ≤ n. Элементы массивов P и T - символы из конечного алфавита Σ. Говорят, что P встречается в T со сдвигом s, если 0 ≤ s ≤ n − m и T [s + 1..s + m] = P [1..m]. Найти: Все допустимые сдвиги с которыми образец P встре- чается в тексте T . 2
  • 4. Терминология Σ∗ - множество всех строк конечной длины, образованных с помощью символов алфавита Σ. - пустая строка. xy - конкатенация двух строк. w < x - w является префиксом строки x, то есть ∃y ∈ Σ∗, что x = wy. w = x - w является суффиксом строки x, то есть ∃y ∈ Σ∗, что x = yw. 3
  • 5. Лемма о перекрывающихся суффиксах Пусть x, y, z - строки, для которых выполняются соотноше- ния x = z и y = z. Если |x| ≥ |y|, то x = y. Если |x| ≤ |y|, то y = x. Если |x| = |y|, то x = y. 4
  • 6. Простейший алгоритм поиска подстрок NaiveStringMatcher(T, P ) 1 n ← length[T ] 2 m ← length[P ] 3 for s ← 0 to n − m 4 do if P [1..m] = T [s + 1..s + m] 5 then print(s) 5
  • 8. Анализ - простейшего алгоритма поиска подстрок Наихудший случай: T = an, P = am T (n) = Θ((n − m + 1)m) При m = n/2 T (n) = Θ(n2) 7
  • 9. Алгоритм Рабина-Карпа Идея: использовать хэш-функцию опеределенную на множе- стве строк. h(S[1..k]) = (S[k] + d(S[k − 1] + . . . + d(S[2] + dS[1]) . . .))mod q, где d - основание системы, q - модуль. 8
  • 10. Алгоритм Рабина-Карпа h(P [1..m]) - хэш образца. {s : h(P [1..m]) = h(T [s..s + m]) ∧ 0 ≥ s ≥ n − m} - множество до- пустимых сдвигов. Обозначим ts = h(T [s..s + m]), тогда ts+1 = (d(ts − T [s + 1]g) + T [s + m + 1]) mod q, где g ≡ dm−1(mod q) 9
  • 13. Проблема алгоритма Рабина-Карпа Из равества h(P ) = ts не следует, что P = T [s..s + m]. Решение проверить сдвиг s посимвольным сравнением. 12
  • 14. 13
  • 15. Анализ алгоритма Рабина-Карпа В наихудшем случае T (n, m) = Θ(m) + Θ((n − m + 1)m). Почему? В общем случае T (n, m) = O(n) + O(m(v + n/q)), где v - ко- личество допустимых сдвигов и q - модуль хэш-функции. Если v = O(1) ∧ q ≥ m ⇒ T (n, m) = O(m + n) = O(n), так как n≥m 14
  • 16. Конечные автоматы M = (Q, q0, A, Σ, δ) Q - конечное множество состояний, q0 ∈ Q - начальное состояние, A ⊆ Q - конечное множество допустимых состояний, Σ - конечный входной алфавит, δ - функция переходов Q × Σ → Q. 15
  • 17. Конечные автоматы φ - функция конечного состояния. φ( ) = q0 φ(wa) = δ(φ(w), a) для w ∈ Σ∗, a ∈ Σ 16
  • 18. Конечный автомат для поиска подстрок σ(x) = max{k : Pk = x}, где Pk < P ∧ |Pk | = k - суффиксная функция Пример, P = ab, σ( ) = 0, σ(ccaca) = 1, σ(ccab) = 2. Правила построения автомата: 1. Q = {0, 1, . . . m}, q0 = 0, A = m 2. δ(q, a) = σ(Pq a) 17
  • 19. Конечный автомат для образца P = ababaca 18
  • 20. Алгоритм поиска подстроки с помощью конечного ав- томата 19
  • 22. Анализ применения конечных автоматов для поиска под- строки Вычисление функции переходов - T (n, m) = O(m3|Σ|). Суще- ствуют алгоритмы - T (n, m) = O(m|Σ|) Поиск подстроки - T (n, m) = Θ(n) 21
  • 23. На семинар и рефераты • Поиск наибольшей общей последовательности. • Алгоритмы поиска подстрок: Кнута-Морриса-Пратта, Бойера- Мура, Демелки-Бейза-Ятса-Гоннета, Бойера-Мура-Хоспула, Бойера-Мура-Санди, Бойера-Мура-Гелила. • Алгоритмы вычисления растояния ммежду строками: Вагнера- Фишера, Хешберга, Ханта-Шиманского, Укконена-Майерса. 22
  • 24. На семинар и рефераты • Алгоритмы для поиска по регулярным выражениям. • Алгоритмы вычисления периодичности: Крочемора, Мейна- Лоренца, Колпакова-Кучерова. • Алгоритмы построения суффиксных деревьев: Укконена, Вайнера, Мак-Крейга. 23
  • 25. Список литературы • Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит- мы: построение и анализ, 2-е издание. - М. : Издатель- ский дом “Вильямс”, 2007. сс.1017-1046. • Смит, Билл. Методы и алгоритмы вычислений на стро- ках. - М.: ООО “И.Д. Вильямс”, 2006. • Гасфилд, Дэн. Строки, деревья и последовательности в алгоритмах: Информатика и вычислительная биология. - СПб.: Невский Диалект; БХВ-Петербург, 2003. 24