Алгоритм Бржозовского — различия между версиями
| Строка 8: | Строка 8: | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
| − | '''Правым языком''' (англ. ''right language'') | + | '''Правым языком''' (англ. ''right language'') называется язык <tex>L_d(q)</tex>, распознаваемый автоматом <tex>\mathcal{A}_{d}(q) = \langle \Sigma , Q , q , T , \delta \rangle</tex>, полученным из <tex>\mathcal{A}</tex> путём добавления уникального начального состояния <tex>q</tex>. |
}} | }} | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
| − | '''Левым языком''' (англ. ''left language'') | + | '''Левым языком''' (англ. ''left language'') называется язык <tex>L_g(q)</tex>, распознаваемый автоматом <tex>\mathcal{A}_{g}(q) = \langle \Sigma , Q , q , T , \delta \rangle</tex>, полученным из <tex>\mathcal{A}</tex> путём добавления уникального терминального состояния <tex>q</tex>. |
}} | }} | ||
| Строка 62: | Строка 62: | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
| − | '''Левое отношение''' регулярного языка <tex>L</tex> для слова <tex>u</tex> из <tex>\Sigma^{*}</tex> {{---}} язык <tex>u^{-1}L = \{ v \in X^{*} \mid uv \in L \}</tex>. | + | '''Левое отношение''' (англ. ''left quotient'') регулярного языка <tex>L</tex> для слова <tex>u</tex> из <tex>\Sigma^{*}</tex> {{---}} язык <tex>u^{-1}L = \{ v \in X^{*} \mid uv \in L \}</tex>. |
}} | }} | ||
| Строка 92: | Строка 92: | ||
|statement= | |statement= | ||
Пусть <tex>\mathcal{A}</tex> {{---}} автомат (необязательно детерминированный), распознающий язык <tex>L</tex>. Минимальный детерминированный автомат <tex>\mathcal{A}_L</tex> может быть вычислен следующим образом: <tex>\mathcal{A}_L = drdr(\mathcal{A})</tex>. | Пусть <tex>\mathcal{A}</tex> {{---}} автомат (необязательно детерминированный), распознающий язык <tex>L</tex>. Минимальный детерминированный автомат <tex>\mathcal{A}_L</tex> может быть вычислен следующим образом: <tex>\mathcal{A}_L = drdr(\mathcal{A})</tex>. | ||
| − | |proof=По построению автомат drdr(A) | + | |proof= |
| − | Покажем, что правые языки drdr(A) | + | По построению автомат <tex>drdr(\mathcal{A})</tex> детерминированный. Согласно утверждению 2, он распознает язык <tex>L</tex>.<br> |
| − | Поскольку правые языки rdr(A) попарно не пересекаются, все правые языки drdr(A) различны. | + | Покажем, что все правые языки <tex>drdr(\mathcal{A})</tex> различны. Из утверждения 1, левые языки <tex>dr(\mathcal{A})</tex> попарно не пересекаются. Из утверждения 3, правые языки <tex>rdr(\mathcal{A})</tex> являются левыми языками <tex>dr(\mathcal{A})</tex>. Таким образом, они попарно не пересекаются. Согласно утверждению 4, правый язык <tex>drdr(\mathcal{A})</tex> {{---}} объединение правых языков <tex>rdr(\mathcal{A})</tex>. |
| + | Поскольку правые языки <tex>rdr(\mathcal{A})</tex> попарно не пересекаются, все правые языки <tex>drdr(\mathcal{A})</tex> различны. | ||
| + | Так как все правые языки <tex>drdr(\mathcal{A})</tex> различны, согласно утверждению 5 автомат <tex>drdr(\mathcal{A})</tex> минимальный. | ||
}} | }} | ||
===Пример работы=== | ===Пример работы=== | ||
| − | # Исходный [[Недетерминированные конечные автоматы|НКА]] | + | # Исходный [[Недетерминированные конечные автоматы|НКА]] <tex>\mathcal{A}</tex>:<br>[[Файл:Fa.png|Исходный НКА]] |
| − | # Первый шаг | + | # Первый шаг, <tex>r(\mathcal{A})</tex>:<br>[[Файл:Rfa.png|Первый шаг]] |
| − | # Второй шаг | + | # Второй шаг, <tex>dr(\mathcal{A})</tex>:<br>[[Файл:Drfa.png|Второй шаг]]<br>В детерминизированных автоматах состояния переименованы, так что <tex>0</tex> всегда является начальным состоянием. |
| − | # Третий шаг | + | # Третий шаг, <tex>rdr(\mathcal{A})</tex>:<br>[[Файл:Rdrfa.png|Третий шаг]]<br>После выполнения этого шага алгоритма оба состояния <tex>2</tex> и <tex>3</tex> являются начальными. |
| − | # Заключительный шаг | + | # Заключительный шаг, <tex>drdr(\mathcal{A})</tex>:<br>[[Файл:Drdrfa.png|Заключительный шаг]] |
== Заключение == | == Заключение == | ||
Версия 19:31, 29 октября 2016
| Задача: |
| Пусть дан автомат . Требуется построить автомат с наименьшим количеством состояний, распознающий тот же язык, что и . |
Содержание
Описание
Пусть — состояние автомата .
| Определение: |
| Правым языком (англ. right language) называется язык , распознаваемый автоматом , полученным из путём добавления уникального начального состояния . |
| Определение: |
| Левым языком (англ. left language) называется язык , распознаваемый автоматом , полученным из путём добавления уникального терминального состояния . |
| Утверждение (1): |
Автомат является детерминированным тогда и только тогда, когда левые языки его состояний попарно не пересекаются. |
| Определение: |
| Обратное слово для слова определяется следующим образом: и если , тогда , где . |
| Определение: |
| Обратный язык для языка — язык . |
| Определение: |
| Обратный автомат для автомата — автомат , полученный из сменой местами начальных и конечных состояний и сменой направлений переходов. |
| Утверждение (2): |
Если распознает язык , то распознает . |
| Утверждение (3): |
Если левый язык состояния в — , тогда его левый язык в — . Аналогично для правого языка . |
Пусть — НКА.
Тогда детерминированный автомат определяется следующим образом:
- Детерминированному состоянию соответствует множество недетерминированных состояний: для каждого имеем ,
- Начальное состояние в — множество из начальных состояний автомата ,
- Состояние в детерминированном автомате является терминальным тогда и только тогда, когда оно содержится хотя бы в одном недетерминированном состоянии,
- Пусть — состояние детерминированного автомата и – символ из . Если переход из по символу определен, тогда, по построению: .
| Утверждение (4): |
Правый язык состояния эквивалентен объединению правых языков состояний автомата , принадлежащих множеству . |
| Определение: |
| Левое отношение (англ. left quotient) регулярного языка для слова из — язык . |
Минимальный автомат для регулярного языка определяется следующим образом:
- множество состояний — это множество левых отношений языка ,
- начальное состояние — ,
- терминальные состояния — множество отношений, содержащих пустое слово,
- функция перехода .
Автомат уникален с точностью до изоморфизма и имеет минимальное количество состояний.
| Утверждение (5): |
Детерминированный полный достижимый автомат минимален тогда и только тогда, когда правые языки его состояний различны. |
Алгоритм
Описание
Алгоритм минимизации конечных автоматов Бржозовского (Janusz A. (John) Brzozowski) выделяется, по крайней мере, следующими качествами:
- Он элегантен и весьма оригинален.
- Он эффективен.
- Он работает даже с недетерминированными конечными автоматами.
Пусть — конечный автомат. — детерминизированный автомат для , — обратный автомат для .
Обозначим как , как , как .
| Теорема (Бржозовский, 1962): |
Пусть — автомат (необязательно детерминированный), распознающий язык . Минимальный детерминированный автомат может быть вычислен следующим образом: . |
| Доказательство: |
|
По построению автомат детерминированный. Согласно утверждению 2, он распознает язык . |
Пример работы
- Исходный НКА :

- Первый шаг, :

- Второй шаг, :

В детерминизированных автоматах состояния переименованы, так что всегда является начальным состоянием. - Третий шаг, :

После выполнения этого шага алгоритма оба состояния и являются начальными. - Заключительный шаг, :

Заключение
Самым эффективным алгоритмом минимизации принято считать алгоритм Хопкрофта, который, как и прочие традиционные алгоритмы, работает только с ДКА. Его асимптотическое время выполнения зависит от логарифма исходных данных. С другой стороны очевидно, что алгоритм Бржозовского в худшем случае будет обладать экспоненциальным временем выполнения, ведь этого требует процедура детерминизации, выполняемая дважды. На практике же наблюдается парадокс, алгоритм Бржозовского во многих случаях опережает прочие подходы к минимизации, включая и алгоритм Хопкрофта. В работе[1], сравнивающей оба алгоритма, показано, что алгоритм Бржозовского оказывается эффективнее алгоритма Хопкрофта для автоматов с большим числом переходов.
См. также
- Минимизация ДКА, алгоритм за O(n^2) с построением пар различимых состояний
- Минимизация ДКА, алгоритм Хопкрофта (сложность O(n log n))