Суффиксный автомат
| Определение: |
| Суффиксный автомат (англ. suffix automaton, directed acyclic word graph) — минимальный ДКА, который принимает все суффиксы строки и только их. |
Описание
Суффиксный автомат для строки представляет собой ациклический ориентированный граф, с начальной вершиной и множеством терминальных вершин, рёбра которого помечены символами .
| Определение: |
| Состояние принимает строку , если существует путь из начального состояния в , такой, что если последовательно выписать буквы на рёбрах на пути, получим строку . |
| Определение: |
| Автомат принимает строку , если её принимает хотя бы одно из финальных состояний. |
Так как автомат детерминированный, то каждому пути соответствует строка.
Если две строки и принимаются одним состоянием произвольного автомата, то для любой строки строки и принимаются или не принимаются автоматом одновременно. Действительно, независимо от того, как мы пришли в состояние , если мы пройдём из него по пути, соответствующему строке , мы сможем точно сказать, в какое состояние мы попадём (в частности, будет ли оно финальным). Значит, любому состоянию соответствует множество строк , которые переводят его в одно из конечных состояний.
| Определение: |
| Множество называют правым контекстом состояния. |
Правый контекст определен не только для состояния, но и для строк, которые оно принимает — правый контекст строк совпадает с правым контекстом состояния.
| Утверждение: |
Состояний в автомате не меньше, чем различных правых контекстов у подстрок строки, для которой он построен, причём в минимальном автомате достигается нижняя оценка. |
| Допустим, что в автомате есть два состояния и такие что . Мы можем удалить состояние и перевести переходы, ведущие в него в состояние . Множество принимаемых строк от этого не изменится, следовательно, мы можем продолжать, пока количество состояний не будет равно числу попарно различных правых контекстов. |
Таким образом, ДКА является минимальным тогда и только тогда, когда правые контексты всех его состояний попарно различны. В случае суффиксного автомата правый контекст строки взаимнооднозначно соответствует множеству правых позиций вхождений строки в строку . Таким образом, каждое состояние автомата принимает строки с одинаковым множеством правых позиций их вхождений и обратно, все строки с таким множеством позиций принимается этим состоянием.
Построение
| Определение: |
| Пусть длина самой короткой строки, которая принимается состоянием равно , тогда суффиксная ссылка будет вести из этого состояния в состояние, которое принимает эту же строку без первого символа. |
Будем обозначать длину самой длинной строки, которая принимается состоянием как . Длина самой короткой строки из в таком случае будет равна .
...
Источники информации
- Maxime Crochemore, Christophe Hancart, Thierry Lecroq — Algorithms on Strings
- А. Кульков — Лекция по суффиксным структурам
