Алгоритм Бжозовского можно распространить на автоматы Мура, но его временная сложность в целом экспоненциальна. Есть ли другой алгоритм минимизации автоматов Мура? Какое время работы этих алгоритмов, если таковые имеются?
10
Алгоритм Бжозовского можно распространить на автоматы Мура, но его временная сложность в целом экспоненциальна. Есть ли другой алгоритм минимизации автоматов Мура? Какое время работы этих алгоритмов, если таковые имеются?
Ответы:
Оригинальный алгоритм минимизации DFA был фактически разработан для машин Мура , руководствуясь их явно более наблюдаемым поведением. Но алгоритм, представленный здесь, является реконструкцией из минимизации DFA, так как я обнаружил историческое свидетельство после факта.
После Википедии (с некоторыми нотационными изменениями):
Согласно этому определению, машина Мура является детерминированным датчиком конечных состояний.
У меня нет ссылки на минимизацию автоматов Мура. Однако кажется не слишком сложным представить алгоритм, полученный из алгоритма, используемого для детерминированных автоматов в конечных состояниях.
Идея минимизации DFA основана на характеристике Myhill-Nerode обычных языков .
Действительно, каждое состояние наименьшего DFA таково, что как определено выше, является одним из классов эквивалентности для отношения .W q R LQ WQ рL
Для DFA для обычного языка легко показать, что каждый набор содержит строки, которые принадлежат одному и тому же эквивалентному классу относительно .W q R LL WQ рL
Следовательно, минимизация DFA фактически состоит из состояний слияния (рассматриваемых как наборы эквивалентных строк), всякий раз, когда показано, что два различных состояния содержат эквивалентные строки.
Для этой цели существуют два достаточно быстрых алгоритма: алгоритм Мура (1956), который находится во времени и алгоритм Хопкрофта (1971) во время O ( n log n ) .O ( n2) O ( n logн )
Расширение автоматов Мура лучше всего можно понять в переопределении отношения эквивалентности в качестве для преобразователя . Отношение было связано с тем, приведет ли будущий ввод к эквивалентному состоянию принятия. отношение эквивалентности автоматов Мура касается , будет ли вход в будущем производить тот же результат. T R L R TрT T рL рT
Следовательно, для преобразователя и двух строк и мы определяем отличительное расширение как строку такую что и с , то есть такой, что выходное поведение преобразователя для различается в зависимости от того, следует ли он за или .x y z T ( x z ) = T ( x ) u T ( y z ) = T (T Икс Y Z T( х з) = T( х ) ты u ≠ v z x yT(уZ) = T( у) v U ≠ v Z Икс Y
Опять же, является отношением эквивалентности, разделяющим все строки в на классы эквивалентности. В случае машины Мура эти классы снова будут соответствовать состоянию минимального преобразователя.Σ ∗рT Σ*
Следующий алгоритм имитирует алгоритм Мура для минимизации DFA.
Мы определим начальное разбиение из на классы состояний следующим образом: Q S eп Q Sе
Затем мы разбиваем классы в следующим образом:п
повторять последовательно для каждого класса состояний , пока ничего не изменится repeat Если то ничего не делать еще Раскол в подмножества такие , что для каждого подмножества , существует другой класс такая что (подмножества заменяют вS
∀ ∈ Е ,
S S i S i∃ S'∈ P,∀д∈S,δ(д, а ) ∈ S'
S Sя
Sя ∀ q ∈ S i ,S'∈ P ∀ д∈ Sя,δ( д, а ) ∈ S'
S PSя S P )
Когда не осталось ни одного класса, который нужно разделить, оставшиеся классы состояний сформируют состояния минимальной машины Мура.
По построению все состояния в классе имеют одинаковый вывод, который является выходом для класса.
Аналогично, для любого входа все состояния в классе переходят в некое состояние в том же другом классе, который определяет функцию перехода для минимальной машины Мура.a∈Σ
Анализ сложности: Пустьбыть числом состояний, иразмер входного алфавита. Основной цикл выполняется не более раз, поскольку каждая итерация должна разбивать как минимум один класс состояний, а каждый класс содержит как минимум одно состояние. Каждая итерация цикла проверяет каждое состояние конечное число раз и пропорционально количеству входных символов. Следовательно, сложность алгоритма , такая же, как и у алгоритма минимизации DFA, который послужил ориентиром для этого.s = | Σ | n O ( s n 2 )n=|Q| s=|Σ|
n O(sn2)
У меня нет никаких ссылок на эту минимизацию машин Мура. Возможно, это включено в его статью:
Эта статья является основным справочником, представляющим машины Мура . Это также ссылка на алгоритм минимизации DFA Мура . Таким образом, должно быть удивительно, если бы адаптация алгоритма к минимизации машин Мура не была, по крайней мере, предложена в этой статье. Я проверил статью, и представленная версия алгоритма минимизации на самом деле предназначена для машин Мура, а не для DFA. Бумага хорошо написана, но стиль того времени делает ее немного труднее читать. Интересно заметить, что многие из идей теории конечных автоматов Майкла-Нерода уже изложены в этой статье.
Более свежий алгоритм Джона Хопкрофта (1971) должен быть аналогичным образом адаптирован к машинам Мура. Не ясно, было ли какое-либо основание публиковать эту адаптацию где-либо, и статья Хопкрофта, похоже, не имеет никакого отношения к машинам Мура.O(snlogn)
источник
Вариант алгоритма Бжозовского, использующий производные регулярных выражений, приведен в [2], глава 12, раздел 4, где он зачислен в [4]. См. [1] и [3] для более общего случая субпоследовательных преобразователей (терминология немного устарела, и термин « последовательный преобразователь» , вероятно, более уместен в настоящее время).
[1] К. Чоффрут, Минимизация субпоследовательных преобразователей: обзор, Теорема. Комп. Sci. 292 (2003), 131–143.
[2] С. Эйленберг, Автоматы, Языки и машины, вып. A, Academic Press, 1974.
[3] Ж.-Е. Pin, учебник по последовательным функциям . (Слайды)
[4] Г. Н. Рене, Последовательные функции, JACM 5 (1958), 177–180.
источник
Алгоритм Бжозовского - плохая отправная точка (если вас интересует асимптотическое время выполнения в худшем случае). Даже Википедия говорит вам так:
Алгоритм имеет экспоненциальное время выполнения в худшем случае даже на DFA, потому что он вычисляет автомат для обратного, который может быть экспоненциально большим. Так что ваша проблема не в расширении до преобразователей.
Попробуйте адаптировать другой алгоритм минимизации DFA.
источник