Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В информатике , А суффикс автомат является эффективной структурой данных для представления подстроки индекса из заданной строки , который позволяет хранение, обработке и извлечению сжатой информации о все ее подстроках . Суффиксный автомат строки - это наименьший ориентированный ациклический граф с выделенной начальной вершиной и набором «конечных» вершин, так что пути от начальной вершины к конечным вершинам представляют суффиксы строки. Формально суффиксный автомат определяется следующим набором свойств:

  1. Его дуги помечены буквами ;
  2. ни один из его узлов не имеет двух исходящих дуг, помеченных одной и той же буквой;
  3. для каждого суффикса существует такой путь от начальной вершины до некоторой конечной вершины, что конкатенация букв на пути образует этот суффикс;
  4. у него наименьшее количество вершин среди всех графов, определенных указанными выше свойствами.

В терминах теории автоматов суффиксный автомат - это минимальный частичный детерминированный конечный автомат, который распознает набор суффиксов данной строки . Граф состояний из автомата суффиксом называется ориентированный ациклический граф слов (DAWG), термин , который также иногда используется для любого детерминированного ациклического конечного автомата .

Суффикс-автоматы были представлены в 1983 году группой ученых из Университета Денвера и Университета Колорадо в Боулдере . Они предложили онлайн-алгоритм линейного времени для его построения и показали, что суффиксный автомат строки длиной не менее двух символов имеет не более состояний и не более переходов. Дальнейшие работы показали тесную связь между суффиксными автоматами и суффиксными деревьями и обрисовали в общих чертах несколько обобщений суффиксных автоматов, таких как сжатый суффиксный автомат, полученный сжатием узлов с одной исходящей дугой.

Суффикс-автоматы обеспечивают эффективные решения таких проблем, как поиск подстроки и вычисление наибольшей общей подстроки из двух и более строк.

История [ править ]

Ансельм Блюмер с рисунком обобщенного CDAWG для струнных ababc и abcab

Концепция суффиксного автомата была введена в 1983 году [1] группой ученых из Университета Денвера и Университета Колорадо в Боулдере, состоящей из Ансельма Блумера, Джанет Блумер, Анджея Эренфойхта , Дэвида Хаусслера и Росса МакКоннелла, хотя аналогичные концепции ранее изучались. наряду с суффиксными деревьями в работах Питера Вайнера [2] Вона Пратта [3] и Анатолия Слиссенко . [4] В своей первоначальной работе Blumer et al . показал суффиксный автомат, построенный для строки, длина которой больше, чем имеет максимальное количество состояний и не болеепереходов и предложил линейный алгоритм построения автомата. [5]

В 1983 году Му-Тиан Чен и Джоэл Сейферас независимо показали, что алгоритм построения суффиксного дерева Вейнера 1973 года [2] при построении суффиксного дерева строки конструирует суффиксный автомат перевернутой строки как вспомогательную структуру. [6] В 1987 году Blumer et al . применил технику сжатия, используемую в суффиксных деревьях, к суффиксному автомату и изобрел сжатый суффиксный автомат, который также называют сжатым направленным ациклическим графом слов (CDAWG). [7] В 1997 году Максим Крошмор и Рено Верен разработали линейный алгоритм для прямого построения CDAWG. [1] В 2001 г. Сюнсуке Иненага и др.. разработал алгоритм построения CDAWG для набора слов, заданных деревом . [8]

Определения [ править ]

Обычно , когда речь идет о суффиксе автоматах и связанных с ними понятия, некоторые понятия из теории формальных языков и теории автоматов используются, в частности: [9]

  • «Алфавит» - это конечный набор, который используется для построения слов. Его элементы называются «персонажами»;
  • «Слово» - это конечная последовательность символов . «Длина» слова обозначается как ;
  • « Формальный язык » - это набор слов в заданном алфавите;
  • «Язык всех слов» обозначается как (где символ «*» обозначает звезду Клини ), «пустое слово» (слово нулевой длины) обозначается символом ;
  • « Конкатенация слов» и обозначаются как или и соответствует слову , полученному в письменной форме справа , то есть ;
  • «Конкатенация языков» , и обозначаются как или и соответствует набору попарно сочленений ;
  • Если слово может быть представлена в виде , где , то слова , и называются «Префикс», «Суффикс» и « подслово » (подстроки) слова соответственно;
  • Говорят, что если тогда "встречается" в качестве подслова. Здесь и называются левая и правая позиции вхождения в соответственно.

Структура автомата [ править ]

Формально детерминированный конечный автомат определяется 5-кортежем , где: [10]

  • это «алфавит», который используется для построения слов,
  • набор автоматных " состояний ",
  • - «начальное» состояние автомата,
  • набор "конечных" состояний автомата,
  • - это частичная функция «перехода» автомата, такая, что for и либо не определено, либо определяет переход от более символа .

Чаще всего детерминированный конечный автомат представляется в виде ориентированного графа («диаграммы»), такого что: [10]

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

В терминах своей диаграммы автомат распознает слово только в том случае, если существует путь от начальной вершины до некоторой конечной вершины, такой, что образуется конкатенация символов на этом пути . Набор слов, распознаваемых автоматом, образует язык, который должен распознаваться автоматом. В этих терминах язык, распознаваемый суффиксным автоматом из, является языком его (возможно, пустых) суффиксов. [9]

Состояния автоматов [ править ]

«Правильный контекст» слова по отношению к языку - это набор, который представляет собой набор слов , соединение которых с ними образует слово из . Правые контексты индуцируют естественное отношение эквивалентности на множестве всех слов. Если язык распознается некоторым детерминированным конечным автоматом, существует единственный с точностью до изоморфизма автомат, распознающий тот же язык и имеющий минимально возможное количество состояний. Такой автомат называется минимальным автоматом для данного языка . Теорема Майхилла – Нероде позволяет ему явно определить его в терминах правых контекстов: [11] [12]

Теорема  -  Минимальный автомат, распознающий язык над алфавитом, может быть явно определен следующим образом:

  • Алфавит остается прежним,
  • Состояния соответствуют правильным контекстам всех возможных слов ,
  • Начальное состояние соответствует правильному контексту пустого слова ,
  • Конечные состояния соответствуют правильным контекстам слов из ,
  • Переходы обозначены , где и .

В этих терминах «суффиксный автомат» - это минимальный детерминированный конечный автомат, распознающий язык суффиксов слова . Правый контекст слова по отношению к этому языку состоит из слов , таких как суффикс . Это позволяет сформулировать следующую лемму, определяющую биекцию между правым контекстом слова и множеством правых позиций его вхождений в : [13] [14]

Теорема  -  Позвольте быть набор правых позиций вхождений в .

Существует следующая биекция и :

  • Если , то ;
  • Если , то .

Например, для слова и его подслова он содержит и . Неформально, состоит из слов, следующих за вхождениями до конца, и формируется из правых позиций этих вхождений. В этом примере элемент соответствует слову, а слово соответствует элементу .

Из него следует несколько структурных свойств суффиксных состояний автомата. Пусть тогда: [14]

  • Если и имеют хотя бы один общий элемент , то и имеют общий элемент. Подразумевается, что это суффикс и, следовательно, и . В вышеупомянутом примере, so является суффиксом и, следовательно, и ;
  • Если , то , значит, встречается только как суффикс . Например, для и он содержит и ;
  • Если и является суффиксом такого that , то . В приведенном выше примере и для «промежуточного» суффикса это .

Любое состояние суффиксного автомата распознает некоторую непрерывную цепочку вложенных суффиксов самого длинного слова, распознаваемого этим состоянием. [14]

«Левое расширение» строки - это самая длинная строка , имеющая тот же правый контекст, что и . Длина самой длинной строки, распознаваемой символом, обозначается . Имеет место: [15]

Теорема  -  левое расширение может быть представлена в виде , где самое длинное слово такое , что любое вхождение в предшествуют .

«Суффиксная ссылка» состояния - это указатель на состояние, которое содержит самый большой суффикс, который не распознается .

В этом смысле можно сказать, что он распознает точно все суффиксы, которые длиннее и не длиннее чем . Также имеет место: [15]

Теорема  -  Суффиксные ссылки образуют дерево, которое можно явно определить следующим образом:

  1. Вершины дерева соответствуют левым расширениям всех подстрок,
  2. Ребра дерева соединяют пары вершин , так что и .

Связь с суффиксными деревьями [ править ]

Взаимосвязь дерева суффиксов, дерева суффиксов, DAWG и CDAWG

« Префиксное дерево » (или « дерево ») - это ориентированное корневое дерево, в котором дуги помечены символами таким образом, что ни одна вершина такого дерева не имеет двух выходящих дуг, отмеченных одним и тем же символом. Некоторые вершины в trie помечаются как конечные. Говорят, что Trie распознает набор слов, определяемых путями от его корня до конечных вершин. Таким образом, префиксные деревья представляют собой особый вид детерминированных конечных автоматов, если вы воспринимаете их корень как начальную вершину. [16] «Суффиксное дерево » слова - это префиксное дерево, распознающее набор его суффиксов. « Суффиксное дерево » - это дерево, полученное из суффиксного дерева с помощью процедуры сжатия,при котором последующие ребра объединяются, если степень вершины между ними равна двум.[15]

По его определению, суффиксный автомат может быть получен путем минимизации суффиксного trie. Можно показать, что уплотненный суффиксный автомат получается как минимизацией суффиксного дерева (если предположить, что каждая строка на краю суффиксного дерева является сплошным символом из алфавита), так и уплотнением суффиксного автомата. [17] Помимо этой связи между суффиксным деревом и суффиксным автоматом той же строки, существует также связь между суффиксным автоматом строки и суффиксным деревом перевернутой строки . [18]

Аналогично правым контекстам можно ввести «левые контексты» , «правые расширения», соответствующие самой длинной строке, имеющей тот же левый контекст, что и отношение эквивалентности . Если рассматривать правильные расширения относительно языка «префиксов» строки, то можно получить: [15]

Теорема  -  Суффиксное дерево строки может быть определено явно следующим образом:

  • Вершины дерева соответствуют правым расширениям всех подстрок,
  • Ребра соответствуют тройкам, таким что и .

Здесь триплет означает, что есть ребро от до, на котором написана строка

, что означает, что дерево суффиксных ссылок строки и суффиксное дерево строки изоморфны: [18]

Как и в случае левых расширений, для правых расширений верна следующая лемма: [15]

Теорема  -  справа продолжение строки может быть представлена в виде , где самое длинное слово такое , что каждое вхождение в сменяет .

Размер [ править ]

Суффиксный автомат строки длины имеет не больше состояний и не больше переходов. Эти границы достигаются на строках и соответственно. [13] Это можно сформулировать более строго как где и - номера переходов и состояний в автомате соответственно. [14]

Строительство [ править ]

Первоначально автомат состоит только из одного состояния, соответствующего пустому слову, затем символы строки добавляются один за другим и автомат перестраивается на каждом шаге постепенно. [19]

Обновления состояния [ править ]

После добавления нового символа к строке некоторые классы эквивалентности изменяются. Позвольте быть правильным контекстом относительно языка суффиксов. Затем переход от к после добавляется к определяется леммой: [14]

Теорема  -  Позвольте быть несколько слов и быть некоторым символом из этого алфавита. Тогда существует следующее соответствие между и :

  • если это суффикс ;
  • иначе.

После добавления к текущему слову правый контекст может существенно измениться, только если это суффикс . Это означает , отношение эквивалентности является уточнение о . Другими словами, если , то . После добавления нового символа будет разделено не более двух классов эквивалентности , и каждый из них может разделиться не более чем на два новых класса. Во-первых, класс эквивалентности, соответствующий пустому правому контексту, всегда разделяется на два класса эквивалентности, один из которых соответствует самому себе и имеет в качестве правого контекста. Этот новый класс эквивалентности содержит точно и все его суффиксы, которые не встречались в, поскольку правый контекст таких слов раньше был пуст, а теперь содержит только пустое слово. [14]

Зная соответствие между состояниями суффиксного автомата и вершинами суффиксного дерева, можно определить второе состояние, которое может расщепиться после добавления нового символа. Переход от к соответствует переходу от к в перевернутой строке. С точки зрения суффиксных деревьев это соответствует вставке нового самого длинного суффикса в суффиксное дерево . После этой вставки могут образоваться не более двух новых вершин: одна из них соответствует , а другая соответствует своему прямому предку, если было ветвление. Возвращаясь к суффиксным автоматам, это означает, что первое новое состояние распознается, а второе (если есть второе новое состояние) является его суффиксной ссылкой. Это можно сформулировать в виде леммы:[14]

Теорема  -  Пусть , будет некоторое слово и символ над . Также позвольте быть самым длинным суффиксом , который встречается в , и let . Тогда для любых подстрок из него имеет место:

  • Если и , то ;
  • Если и , то ;
  • Если и , то .

Это означает, что если (например, когда не встречается вообще и ), то разделяется только класс эквивалентности, соответствующий пустому правому контексту. [14]

Помимо суффиксных ссылок необходимо также определить конечные состояния автомата. Из свойств структуры , что все суффиксы слова , признаваемые распознаются некоторой вершина на суффикс пути из . А именно, суффиксов с длиной больше , чем лежат в , суффиксов с длиной , большей , но не больше , чем лежат в и так далее. Таким образом, если распознавание состояния обозначено как , то все конечные состояния (то есть распознавание суффиксов ) образуют последовательность . [19]

Обновления переходов и суффиксных ссылок [ править ]

После добавления символа к возможным новым состояниям автомата суффикса относятся и . Суффиксная ссылка от идет к и от нее идет . Слова from встречаются только как его суффиксы, поэтому не должно быть вообще никаких переходов из while, переходы к нему должны идти от суффиксов, имеющих как минимум длину, и быть отмеченными символом . Состояние формируется подмножеством , поэтому переходы из должны быть такими же, как из . Между тем, переходы, ведущие к, должны начинаться с суффиксов , длина которых меньше и не меньше, поскольку такие переходы привели к предыдущему и соответствовали отделенной части этого состояния. Состояния, соответствующие этим суффиксам, могут быть определены путем обхода пути ссылки суффикса для . [19]

Алгоритм строительства [ править ]

Теоретические результаты, приведенные выше, приводят к следующему алгоритму, который берет характер и перестраивает суффиксный автомат of в суффиксный автомат : [19]

  1. Состояние, соответствующее слову , сохраняется как ;
  2. После добавления предыдущее значение сохраняется в переменной и само переназначается в новое состояние, соответствующее ;
  3. Состояния, соответствующие суффиксам , обновляются переходами в . Для этого нужно пройти , пока не появится состояние, в котором уже есть переход ;
  4. После завершения вышеупомянутого цикла возможны 3 случая:
    1. Если ни одно из состояний на пути суффикса не имело перехода на , то никогда не происходило ранее и суффиксная ссылка от должна вести к ;
    2. Если переход по найден и ведет из состояния в состояние , такое что , то не нужно разделять, и это суффиксная ссылка ;
    3. Если переход найден , то слова , длина которых не превышает максимальную, должны быть выделены в новое состояние «клон» ;
  5. Если предыдущий шаг был завершен созданием , переходы от него и его суффиксная ссылка должны копировать те из , в то же время назначается общая суффиксная ссылка для обоих и ;
  6. Переходы, которые привели к предыдущим, но соответствуют словам максимальной длины , перенаправляются на . Для этого продолжают проходить суффиксный путь до тех пор, пока не будет найдено состояние, при котором переход by от него не приведет к .

Вся процедура описывается следующим псевдокодом: [19]

функция  add_letter (x) : определить  p = last  assign  last = new_state ()  assign  len (last) = len (p) + 1,  пока  δ (p, x) не определено: назначить  δ (p, x) = last, p = link (p)  define  q = δ (p, x)  if  q = last : assign  link (last) = q 0  else if  len (q) = len (p) + 1 : assign  link (last) = q  else : define  cl = new_state ()  присвоить  len (cl) = len (p) + 1  присвоить  δ (cl) = δ (q), link (cl) = link (q)  присвоить link (last) = link (q) = cl,  а  δ (p, x) = q : присвоить  δ (p, x) = cl, p = link (p)

Вот начальное состояние автомата и функция, создающая для него новое состояние. Предполагается , , и сохраняются как глобальные переменные. [19]

Сложность [ править ]

Сложность алгоритма может варьироваться в зависимости от базовой структуры, используемой для хранения переходов автомата. Это может быть реализовано с накладными расходами памяти или с накладными расходами памяти, если предполагается, что распределение памяти выполняется в . Чтобы получить такую ​​сложность, необходимо использовать методы амортизированного анализа . Значение строго уменьшается с каждой итерацией цикла, в то время как оно может увеличиваться только на единицу после первой итерации цикла при следующем вызове add_letter . Общая стоимость никогда не превышаети он увеличивается только на единицу между итерациями добавления новых букв, что предполагает, что общая сложность также является не более чем линейной. Аналогично демонстрируется линейность второго цикла. [19]

Обобщения [ править ]

Суффиксный автомат тесно связан с другими суффиксными структурами и индексами подстроки . Имея суффиксный автомат конкретной строки, можно построить ее суффиксное дерево с помощью сжатия и рекурсивного обхода за линейное время. [20] Подобные преобразования возможны в обоих направлениях для переключения между суффиксным автоматом и суффиксным деревом перевернутой строки . [18] Помимо этого, было разработано несколько обобщений для построения автомата для набора строк, заданных trie, [8] сжатым суффиксом автоматизации (CDAWG), [7] для поддержания структуры автомата на скользящем окне, [21 ]и строить его двунаправленным способом, поддерживая вставку символов как в начало, так и в конец строки. [22]

Сжатый суффикс-автомат [ править ]

Как уже упоминалось выше, уплотненный суффиксный автомат получается как посредством уплотнения регулярного суффиксного автомата (путем удаления состояний, которые не являются конечными и имеют ровно одну выходящую дугу), так и посредством минимизации суффиксного дерева. Как и в случае обычного суффиксного автомата, состояния уплотненного суффиксного автомата могут быть определены явно. Двустороннее расширение слова - это самое длинное слово , так что каждому вхождению in предшествует и следует за ним . В терминах левого и правого расширений это означает, что двустороннее расширение - это левое расширение правого расширения или, что эквивалентно, правое расширение левого расширения, то есть. В терминах двусторонних расширений компактный автомат определяется следующим образом: [15]

Теорема  -  Сжатый суффикс-автомат слова определяется парой , где:

  • - набор состояний автомата;
  • представляет собой набор автоматных переходов.

Двусторонние расширения индуцируют отношение эквивалентности, которое определяет набор слов, распознаваемых одним и тем же состоянием уплотненного автомата. Это отношение эквивалентности является транзитивным замыканием отношения, определяемого с помощью , которое подчеркивает тот факт, что компактный автомат может быть получен как склейкой вершин суффиксного дерева, эквивалентной через отношение (минимизация суффиксного дерева), так и склейкой состояний суффиксного автомата, эквивалентных через отношение (сжатие суффиксного автомата). [23] Если слова и имеют такое же право расширения и слова и имеют одинаковые левые расширения, то кумулятивно все строки , иимеют такие же двусторонние расширения. В то же время может случиться так, что ни левое, ни правое продолжение и не совпадают. В качестве примера можно взять , и , для которого левое и правое расширения следующие:, но и . При этом, в то время как отношения эквивалентности односторонних расширений были сформированы некоторой непрерывной цепочкой вложенных префиксов или суффиксов, отношения эквивалентности двунаправленных расширений более сложны, и единственное, что можно сделать с уверенностью, - это то, что строки с одинаковым двусторонним расширением являются подстрокисамой длинной строки с одинаковым двусторонним расширением, но может даже случиться так, что у них нет общей непустой подстроки. Общее количество классов эквивалентности для этого отношения не превосходит, что означает, что сжатый суффиксный автомат строки, имеющей длину, имеет не больше состояний. Количество переходов в таком автомате не больше . [15]

Суффиксный автомат из нескольких строк [ править ]

Рассмотрим набор слов . Можно построить обобщение суффиксного автомата, которое распознало бы язык, образованный суффиксами всех слов из набора. Ограничения на количество состояний и переходов в таком автомате останутся такими же, как и для однословного автомата, если вы установите . [23] Алгоритм похож на построение однословного автомата, за исключением того, что вместо состояния функция add_letter будет работать с состоянием, соответствующим слову, предполагая переход от набора слов к набору . [24] [25]

Эта идея далее обобщается на случай, когда не задается явно, а задается префиксным деревом с вершинами. Mohri et al . показал, что такой автомат будет иметь самое большее и может быть построен за линейное время из своего размера. При этом количество переходов в таком автомате может достигать , например, для набора слов по алфавиту общая длина рабочих операций равна , количество вершин в соответствующем суффиксном trie равно, а соответствующий суффиксный автомат равен сформированный из государств ипереходы. Алгоритм, предложенный Мохри, в основном повторяет общий алгоритм построения автомата из нескольких строк, но вместо того, чтобы наращивать слова одно за другим, он просматривает дерево в порядке поиска в ширину и добавляет новые символы, когда они встречаются с ними при обходе, что гарантирует амортизацию линейная сложность. [26]

Скользящее окно [ править ]

Некоторые алгоритмы сжатия , такие как LZ77 и RLE, могут выиграть от сохранения автомата суффикса или подобной структуры не для всей строки, а только для последних ее символов, пока строка обновляется. Это связано с тем, что сжатие данных обычно очень велико и использование памяти нежелательно. В 1985 году Джанет Блумер разработала алгоритм для поддержки суффиксного автомата в скользящем окне размера в худшем случае и в среднем, предполагая, что символы распределены независимо и равномерно . Она также показала, что сложность не может быть улучшена: если рассматривать слова как конкатенацию нескольких слов, где, то количество состояний для окна размера будет часто меняться с скачками порядка , что делает невозможным даже теоретическое улучшение для обычных суффиксных автоматов. [27]

То же самое должно быть верно и для суффиксного дерева, потому что его вершины соответствуют состояниям суффиксного автомата перевернутой строки, но эту проблему можно решить, не сохраняя явно каждую вершину, соответствующую суффиксу всей строки, таким образом сохраняя только вершины с at минимум два выходящих края. Вариант алгоритма построения суффиксного дерева МакКрайта для этой задачи был предложен в 1989 году Эдвардом Фиала и Дэниелом Грином; [28], спустя несколько лет аналогичный результат был получен с вариацией алгоритма Укконена Джеспером Ларссоном. [29] [30]Существование такого алгоритма для сжатого суффиксного автомата, который вбирает в себя некоторые свойства как суффиксных деревьев, так и суффиксных автоматов, долгое время оставалось открытым вопросом, пока в 2008 году Мартин Зенфт и Томаш Дворжак не обнаружили, что это невозможно, если размер алфавита не менее двух. [31]

Один из способов преодолеть это препятствие - позволить ширине окна немного варьироваться во время пребывания . Этого можно добиться с помощью приблизительного алгоритма, предложенного Inenaga et al. в 2004 году. Не гарантируется, что окно, для которого построен суффиксный автомат в этом алгоритме, будет иметь длину, но гарантированно будет по крайней мере и максимум при обеспечении линейной общей сложности алгоритма. [32]

Приложения [ править ]

Суффиксный автомат строки может быть использован для решения таких задач, как: [33] [34]

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

Здесь предполагается, что на входе после построения суффиксного автомата . [33]

Суффикс-автоматы также используются при сжатии данных, [35] поиске музыки [36] [37] и сопоставлении последовательностей генома. [38]

Ссылки [ править ]

  1. ^ a b Crochemore, Vérin (1997) , стр. 192
  2. ^ а б Вайнер (1973)
  3. Пратт (1973)
  4. ^ Слисенко (1983)
  5. ^ Блумер и др. (1984) , стр. 109
  6. ^ Чен, Сейферас (1985) , стр. 97
  7. ^ a b Блумер и др. (1987) , стр. 578
  8. ^ а б Inenaga et al. (2001) , стр. 1
  9. ^ a b Crochemore, Hancart (1997) , стр. 3-6
  10. ^ a b Серебряков и др. (2006) , стр. 50–54.
  11. ^ Рубцов (2019) , стр. 89-94
  12. Hopcroft, Ullman (1979) , стр. 65-68
  13. ^ a b Блумер и др. (1984) , стр. 111–114.
  14. ^ a b c d e f g h Crochemore, Hancart (1997) , стр. 27–31
  15. ^ Б с д е е г Inenaga и др. (2005) , стр. 159–162.
  16. Рубинчик, Шур (2018) , стр. 1-2
  17. ^ Inenaga et al. (2005) , стр. 156-158.
  18. ^ a b c Fujishige et al. (2016) , стр. 1–3
  19. ^ a b c d e f g Crochemore, Hancart (1997) , стр. 31–36
  20. ^ Паращенко (2007) , стр. 19-22
  21. ^ Блумер (1987) , стр. 451
  22. ^ Inenaga (2003) , стр. 1
  23. ^ a b Блумер и др. (1987) , стр. 585–588
  24. ^ Блумер и др. (1987) , стр. 588-589.
  25. ^ Блумер и др. (1987) , стр. 593
  26. ^ Mohri et al. (2009) , стр. 3558–3560.
  27. ^ Блумер (1987) , стр. 461-465
  28. ^ Фиала, Грин (1989) , стр. 490
  29. ^ Ларссон (1996)
  30. ^ Brodnik, Jekovec (2018) , стр. 1
  31. ^ Senft, Дворжак (2008) , стр. 109
  32. ^ Inenaga et al. (2004)
  33. ^ Б Crochemore, Hancart (1997) , стр. 36-39
  34. ^ Crochemore, Hancart (1997) , стр. 39-41
  35. ^ Ямамото и др. (2014) , стр. 675
  36. ^ Crochemore et al. (2003) , стр. 211
  37. ^ Mohri et al. (2009) , стр. 3553
  38. Фаро (2016) , стр. 145

Библиография [ править ]

  • Ансельм Блумер; Джанет Блумер; Анджей Эренфойхт ; Дэвид Хаусслер ; Росс МакКоннелл (1984). Построение минимального DFA для набора всех подслов слова в режиме онлайн за линейное время . Международный коллоквиум по автоматам, языкам и программированию . С. 109–118. DOI : 10.1007 / 3-540-13345-3_9 . ISBN 978-3-540-13345-2. Викиданные  Q90309073 .
  • Ансельм Блумер; Джанет Блумер; Анджей Эренфойхт ; Дэвид Хаусслер ; Росс МакКоннелл (июль 1987 г.). «Полные перевернутые файлы для эффективного поиска и анализа текста» . Журнал ACM . 34 (3): 578–595. CiteSeerX  10.1.1.87.6824 . DOI : 10.1145 / 28869.28873 . ISSN  0004-5411 . Викиданные  Q90311855 .
  • Джанет Блумер (декабрь 1987 г.). «Сколько стоит эта DAWG в окне? Алгоритм движущегося окна для ориентированного ациклического графа слов» . Журнал алгоритмов . 8 (4): 451–469. DOI : 10.1016 / 0196-6774 (87) 90045-9 . ISSN  0196-6774 . Викиданные  Q90327976 .
  • Андрей Бродник; Матевж Ековец (3 августа 2018 г.). «Скользящее суффиксное дерево» . Алгоритмы . 11 (8): 118. DOI : 10,3390 / A11080118 . ISSN  1999-4893 . Викиданные  Q90431196 .
  • Му-Тянь Чен; Джоэл Сейферас (1985). Эффективная и элегантная конструкция дерева подслов . Комбинаторные алгоритмы на словах . С. 97–107. CiteSeerX  10.1.1.632.4 . DOI : 10.1007 / 978-3-642-82456-2_7 . ISBN 978-3-642-82456-2. Викиданные  Q90329833 .
  • Максим Крочмор ; Кристоф Ханкарт (1997). Автоматы для сопоставления шаблонов . Справочник формальных языков . 2 . С. 399–462. CiteSeerX  10.1.1.392.8637 . DOI : 10.1007 / 978-3-662-07675-0_9 . ISBN 978-3-642-59136-5. Викиданные  Q90413384 .
  • Максим Крочмор ; Рено Верен (1997). О компактных ориентированных ациклических графах слов . Структуры в логике и информатике . Конспект лекций по информатике . С. 192–211. CiteSeerX  10.1.1.13.6892 . DOI : 10.1007 / 3-540-63246-8_12 . ISBN 978-3-540-69242-3. Викиданные  Q90413885 .
  • Максим Крочмор ; Костас С. Илиопулос; Гонсало Наварро ; Йоан Дж. Пинзон (2003). Подход бит-параллельного суффикс-автомата для (δ, γ) -сопоставления в поиске музыки . Международный симпозиум по обработке строк и поиску информации . С. 211–223. CiteSeerX  10.1.1.8.533 . DOI : 10.1007 / 978-3-540-39984-1_16 . ISBN 978-3-540-39984-1. Викиданные  Q90414195 .
  • Владимир Серебряков; Максим Павлович Галочкин; Меран Габибуллаевич Фуругян; Дмитрий Русланович Гончар (2006). Теория и реализация языков программирования (PDF) (на русском языке). Москва: МЗ Пресс. ISBN 5-94073-094-9. Викиданные  Q90432456 .
  • Симоне Фаро (2016). Оценка и улучшение быстрых алгоритмов точного сопоставления последовательностей генома . Международная конференция по алгоритмам вычислительной биологии . Конспект лекций по информатике . С. 145–157. DOI : 10.1007 / 978-3-319-38827-4_12 . ISBN 978-3-319-38827-4. Викиданные  Q90412338 .
  • Эдвард Р. Фиала; Дэниел Х. Грин (апрель 1989 г.). «Сжатие данных с конечными окнами» . Коммуникации ACM . 32 (4): 490–505. DOI : 10.1145 / 63334.63341 . ISSN  0001-0782 . Викиданные  Q90425560 .
  • Юта Фудзишиге; Юки Цудзимару; Сюнсуке Иненага; Хидео Баннаи; Масаюки Такеда (2016). Вычисление DAWG и минимального количества отсутствующих слов за линейное время для целочисленных алфавитов (PDF) . Международный симпозиум по математическим основам информатики . 58 . С. 38: 1–38: 14. DOI : 10,4230 / LIPICS.MFCS.2016.38 . ISBN 978-3-95977-016-3. ISSN  1868-8969 . Викиданные  Q90410044 .
  • Джон Эдвард Хопкрофт ; Джеффри Дэвид Ульман (1979). Введение в теорию автоматов, языки и вычисления (1-е изд.). Массачусетс: Эддисон-Уэсли . ISBN 81-7808-347-7. ПР  9082218М . Викиданные  Q90418603 .
  • Сюнсуке Иненага (март 2003 г.). «Двунаправленное построение суффиксных деревьев» (PDF) . Северный вычислительный журнал . 10 (1): 52–67. CiteSeerX  10.1.1.100.8726 . ISSN  1236-6064 . Викиданные  Q90335534 .
  • Сюнсуке Иненага; Хиромаса Хосино; Аюми Шинохара; Масаюки Такеда; Сэцуо Арикава; Джанкарло Маури; Джулио Павеси (март 2005 г.). «Он-лайн построение компактных ориентированных ациклических графов слов» . Дискретная прикладная математика . 146 (2): 156–179. CiteSeerX  10.1.1.1039.6992 . DOI : 10.1016 / J.DAM.2004.04.012 . ISSN  0166-218X . Викиданные  Q57518591 .
  • Сюнсуке Иненага; Хиромаса Хосино; Аюми Шинохара; Масаюки Такеда; Сэцуо Арикава (2001). «Построение CDAWG для дерева» (PDF) . Пражская конференция по струнологии : 37–48. CiteSeerX  10.1.1.24.2637 . Викиданные  Q90341606 .
  • Сюнсуке Иненага; Аюми Шинохара; Масаюки Такеда; Сэцуо Арикава (март 2004 г.). «Компактные ориентированные ациклические графы слов для скользящего окна» . Журнал дискретных алгоритмов . 2 (1): 33–51. CiteSeerX  10.1.1.101.358 . DOI : 10.1016 / S1570-8667 (03) 00064-9 . ISSN  1570-8667 . Викиданные  Q90345535 .
  • Н. Джеспер Ларссон (1996). «Расширенное применение суффиксных деревьев для сжатия данных» . Конференция по сжатию данных : 190–199. CiteSeerX  10.1.1.12.8623 . DOI : 10.1109 / DCC.1996.488324 . ISSN  1068-0314 . Викиданные  Q90427112 .
  • Мехрияр Мохри; Педро Морено; Евгений Вайнштейн (сентябрь 2009 г.). «Общий алгоритм построения суффиксного автомата и границы пространства» . Теоретическая информатика . 410 (37): 3553–3562. CiteSeerX  10.1.1.157.7443 . DOI : 10.1016 / J.TCS.2009.03.034 . ISSN  0304-3975 . Викиданные  Q90410808 .
  • Дмитрий А. Паращенко (2007), Обработка строк на основе суффиксных автоматов (PDF ), Санкт-Петербург: Университет ИТМО , Wikidata  Q90436837
  • Воан Рональд Пратт (1973), Улучшения и приложения для поисковика повторений Вайнера , OCLC  726598262 , Wikidata  Q90300966
  • Александр Александрович Рубцов (2019). Заметки и задачи о регулярных языках и конечных автоматах (PDF) (на русском языке). Москва: Московский физико-технический институт . ISBN 978-5-7417-0702-9. Викиданные  Q90435728 .
  • Михаил Рубинчик; Арсений Михайлович Шур (февраль 2018). "Eertree" (PDF) . Европейский журнал комбинаторики . 68 : 249–265. arXiv : 1506.04862 . DOI : 10.1016 / J.EJC.2017.07.021 . ISSN  0195-6698 . Викиданные  Q90726647 .
  • Мартин Зенфт; Томаш Дворжак (2008). Выдвижной CDAWG Perfection . Международный симпозиум по обработке строк и поиску информации . С. 109–120. DOI : 10.1007 / 978-3-540-89097-3_12 . ISBN 978-3-540-89097-3. Викиданные  Q90426624 .
  • Анатолий Олесиевич Слисенко (1983). «Обнаружение периодичностей и совпадение строк в реальном времени» . Журнал математических наук . 22 (3): 1316–1387. DOI : 10.1007 / BF01084395 . ISSN  1072-3374 . Викиданные  Q90305414 .
  • Питер Вайнер (октябрь 1973 г.). «Алгоритмы линейного сопоставления с образцом» . Симпозиум по основам информатики : 1–11. CiteSeerX  10.1.1.474.9582 . DOI : 10.1109 / SWAT.1973.13 . Викиданные  Q29541479 .
  • Дзюнъити Ямамото; Томохиро I; Хидео Баннаи; Сюнсуке Иненага; Масаюки Такеда (2014). Быстрая компактная факторизация Лемпеля-Зива онлайн (PDF) . Симпозиум по теоретическим аспектам информатики . Лейбниц Международные труды по информатике. 25 . С. 675–686. CiteSeerX  10.1.1.742.6691 . DOI : 10,4230 / LIPICS.STACS.2014.675 . ISBN 978-3-939897-65-1. ISSN  1868-8969 . Викиданные  Q90348192 .

Внешние ссылки [ править ]

  • СМИ, связанные с автоматом суффиксов на Викискладе?
  • Статья о суффиксных автоматах по алгоритмам E-Maxx на английском языке