Алгоритмы и структуры данных 4. Суффиксный автомат

YOUTUBE · 01.12.2025 05:09

Ключевые темы и таймкоды

Определение автомата

0:04
  • Автомат - это граф с ребрами и метками, где на каждом ребре написана буква.
  • Автомат детерминированный, если из вершины ведет только одно ребро с определенной меткой.

Определение принимаемых слов

2:21
  • Принимаемые слова - это слова, которые можно прочитать на пути от старта до терминальной вершины.
  • Отвергаемые слова - это те, которые нельзя прочитать или которые заканчиваются в не терминальной вершине.

Определение языка

5:55
  • Язык - это множество всех слов, которые принимает автомат.
  • Правый контекст - это все возможные способы дополнить слово справа, чтобы оно лежало в языке.

Отношение эквивалентности

8:30
  • Два слова эквивалентны, если они имеют одинаковые правые контексты.
  • Теорема Мохла Нероуда утверждает, что отношение эквивалентности, порожденное правыми контекстами, является отношением эквивалентности.

Минимальные автоматы и классы эквивалентности

10:10
  • Вводится понятие минимального автомата, принимающего только определенные слова из языка.
  • Доказывается теорема, что минимальное число вершин достигается в том случае, когда состояниями автомата являются классы эквивалентности по введенному отношению.

Суффиксные автоматы

17:04
  • Рассматривается случай, когда нужно строить автомат, принимающий только суффиксы строки.
  • Строится суффиксный автомат строки, где вершины соответствуют классам эквивалентности.
  • Вводится понятие пустого класса эквивалентности, который соответствует словам, не являющимся подстроками строки.
  • В общем случае, для всех слов, теорема не работает, но в случае суффиксных автоматов она работает.

Определение классов валентности

22:20
  • Рассматриваются подстроки с одинаковым правым контекстом.
  • Доказывается, что если у двух строк одинаковый класс валентности, то одна является суффиксом другой.

Структура классов валентности

24:47
  • Утверждается, что в классе валентности существует самая длинная строка и несколько ее суффиксов.
  • Доказывается, что все суффиксы длины хотя бы такой лежат в классе.

Определение ребер автомата

30:43
  • Ребра автомата определяются как тройки классов и символов алфавита.
  • Доказывается, что если существует у и ц1 такое, что уд лежит в ц2, то и все другие пути из ц1 можно продолжить буквой д.

Определение ребер автомата

34:02
  • Доказательство того, что правый контекст строки "уд" вложен в правый контекст строки "вд".
  • Определение ребер автомата на примере строки "абц аб".

Терминальные вершины и классы эквивалентности

43:30
  • Терминальные вершины - это вершины, содержащие суффиксы.
  • Обозначение классов эквивалентности через квадратные скобки.
  • Определение лонгеста и суффиксной ссылки класса.
  • Утверждение о том, что строка является лонгестом в своем классе, если она является префиксом или строкой, продлевающейся налево разными буквами.

Определение лонгистов

49:01
  • Вводится понятие лонгиста - строки, которая является префиксом другой строки и имеет два различных продолжения слева.
  • Доказывается, что любая строка, которая является лонгистом относительно другой строки, остается лонгистом при добавлении новой буквы.

Суффиксный автомат

55:58
  • Рассматривается алгоритм построения суффиксного автомата по строке с.
  • Используется понятие лонгиста для определения классов эквивалентности.
  • При переходе от строки с к строке сц, одна строка становится новым лонгистом.
  • Определяется класс эквивалентности, который содержит все суффиксы сц, которые не являются подстроками с.

Определение лонгеста

1:05:26
  • Рассматривается самый длинный суффикс, который ранее входил в строку, и определяется его длина.
  • Если новый лонгест появился, он обязательно равен нулю.

Доказательство

1:10:10
  • Доказывается, что если новый лонгест появился, то он равен нулю.
  • Рассматривается произвольный новый лонгест и доказывается, что он равен нулю.

Вывод

1:13:36
  • Вывод: всегда появляется новый лонгест сц, возможно, с ноль.
  • Максимальное количество вершин и классов равно двум.