Алгоритм Бжозовского для минимизации ДФА

16

Алгоритм минимизации DFA Бжозовского создает минимальный DFA для DFA путем:G

  1. обращая все ребра в , делая начальное состояние принимающим, а принимающее - начальным, чтобы получить NFA для обратного языка,N GN
  2. используя конструкцию powerset, чтобы получить для обратного языка,G
  3. обращая ребра (и начально-принимающий обмен) в чтобы получить NFA для исходного языка, и NGN
  4. делает конструкцию powerset, чтобы получить .Gmin

Конечно, поскольку некоторые DFA имеют экспоненциально большое обратное DFA, этот алгоритм работает в экспоненциальном времени в худшем случае с точки зрения размера входных данных, поэтому давайте отследим размер обратного DFA.

Если N - размер входного DFA, n - размер минимального DFA, а m - размер минимального обратного DFA, то каково время выполнения алгоритма Бжозовского с точки зрения N , n и m ?

В частности, при каких отношениях между n и m алгоритм Бжозовского превосходит алгоритмы Хопкрофта или Мура?

Я слышал, что на типичных примерах / практиках алгоритм Бжозовского превосходит другие. Неформально, на что похожи эти типичные примеры?

Артем Казнатчеев
источник
было бы полезно, если бы вы включили O (f (n)) оценки этих алгоритмов. они все O (n log (n)) в «среднем» случае? если это так, то дебаты об их относительной эффективности могут быть в основном прикладным тестом в зависимости от статистических характеристик / структуры входных данных ... кажется вероятным, что Бжозовский работает быстро, когда обратный NFA "невелик" ...?
ВЗН
Будьте осторожны с выполнением алгоритма, вы можете испытать желание ввести виртуальное стартовое состояние при выполнении 1. и 3., что приведет к неверным результатам - см. Здесь . (В этом вопросе нет ничего плохого, просто нужно быть осторожным, чтобы не ошибиться.)
А.Шульц

Ответы:

5

Вот частичный ответ относительно вашего третьего вопроса. На самом деле, возможно, алгоритм Бжозовского на самом деле не так сильно превосходит все другие алгоритмы в минимизации DFA.

В [1] авторы исследуют практическую эффективность алгоритмов минимизации DFA / NFA. Алгоритмы Хопкрофта, Бжозовского и два варианта Уотсона. Они пришли к выводу, что нет явного победителя, но алгоритм Хопкрофта работает лучше для DFA с маленькими алфавитами. Для NFAs Brzozowski явно самый быстрый.

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


[1] Алмейда М., Морейра Н. и Рейс Р. О производительности алгоритмов минимизации автоматов, Четвертая конференция по вычислимости в Европе, июнь 2008 г.

Юхо
источник
Спасибо, я посмотрю на статью и посмотрю, смогу ли я использовать ссылки, чтобы найти полный ответ.
Артем Казнатчеев
5

Большинство из нижеприведенного - из теории парсинга Сиппу и Сойсалона-Сойнинена.

Пусть будет множеством состояний DFA. Пусть будет входным алфавитом. Пусть будет размером машины. В упражнении 3.40 приведен алгоритм для минимизации состояния. Как описывает Википедия , алгоритм Хопкрофта имеет время работы а алгоритм Мура имеет время работы ,T | М | = O ( | T || Q | ) O ( | T || Q | 2 ) O ( | T || Q |log | T | ) O ( | T | 2| Q | )QT|M|=O(|T||Q|)O(|T||Q|2)O(|T||Q|log|T|)O(|T|2|Q|)

Теорема 3.30 утверждает, что построение подмножества может быть выполнено в давая автомат размера (фактически, если результирующий автомат имеет состояний, время выполнения равно ). Таким образом, два обращения и вторая детерминация несущественны во время выполнения, поэтому асимптотическое время выполнения алгоритма Бжозовского такое же, как и при построении подмножества.O ( 2 | T | + log | Q | ) | Т | ( | T | + | T || M | ) | Q |O(2|T|+log|T|+log|Q|)O(2|T|+log|Q|)|T|(|T|+|T||M|)|Q|

Это означает, что в худшем случае алгоритм Бжозовского экспоненциально медленнее, чем три других алгоритма. Обратите внимание, что наихудший случай действительно имеет место: классический пример NFA для языка имеет состояний, а его соответствующий минимальный DFA имеет состояний, тогда как обратный NFA является детерминированным, поэтому выполнение алгоритма Бжозовского на этом обращенном NFA запускает поведение в худшем случае. k + 1 O ( 2 k )(a|b)akk+1O(2k)

Однако, если конструкция подмножества дает автоматы размера , то время его работы также равно , что часто имеет место на реальных входах. Кроме того, если при вычислении замыкания состояния будут приняты надлежащие меры, в большинстве случаев это может быть сделано гораздо быстрее (то есть, когда замыкание невелико), сохраняя коэффициентна практике (по той же причине, по которой транзитивные замыкания могут быть вычислены довольно быстро на реальных примерах). Кроме того, если входной и промежуточный автоматы редки, что означает, что состояния имеют мало переходов, то факторсохраняется, что дает время выполнения на «хороших» входах.O ( | T | 2| Q | 2 ) | T | | Q | O ( | T || Q | )|T|=O(|T|)O(|T|2|Q|2)|T||Q|O(|T||Q|)

К сожалению, я недостаточно знаком с алгоритмами Хопкрофта или Мура, чтобы анализировать время их работы в типичных случаях. Википедия говорит о времени выполнения в некоторых случаях, что делает эти три алгоритма сопоставимыми.O(|T|loglog|T|)

Алекс тен Бринк
источник
1

Де Феличе и Нико показывают, что алгоритмы Бжозовского асимптотически гиперполиномиальны. Дэвид показал, что для нескольких распределений по конечным состояниям алгоритм Хопкрофта медленнее, чем алгоритм Мура.

Ссылки

С. Де Феличе и С. Нико, «Алгоритм Бжозовского является обобщенно суперполиномом для детерминированных автоматов». В материалах 17-й Международной конференции по развитию теории языка (DLT 2013) , Конспект лекций в области компьютерных наук, с. 170–190, 2013. ( PDF )

Дж. Дэвид, "Средняя сложность алгоритмов Мура и Хопкрофта". Теоретическая информатика , 417: 50–65, 2012. ( Science Direct )

nevro
источник