Алгоритм Бржозовского — различия между версиями
|  (→Пример работы) | |||
| Строка 24: | Строка 24: | ||
| ===Корректность=== | ===Корректность=== | ||
| ==Пример работы== | ==Пример работы== | ||
| − | * Исходный НКА | + | * Исходный [[Недетерминированные конечные автоматы|НКА]] (<tex>FA</tex>): | 
| [[Файл:Fa.png|Исходный НКА]] | [[Файл:Fa.png|Исходный НКА]] | ||
| − | * Первый шаг алгоритма | + | * Первый шаг алгоритма (<tex>rev(FA)</tex>): | 
| [[Файл:Rfa.png|Первый шаг]] | [[Файл:Rfa.png|Первый шаг]] | ||
| − | * Второй шаг алгоритма | + | * Второй шаг алгоритма (<tex>det(rev(FA))</tex>): | 
| [[Файл:Drfa.png|Второй шаг]] | [[Файл:Drfa.png|Второй шаг]] | ||
| − | * Третий шаг алгоритма | + | |
| + | <tex>det()</tex> переименовывает состояния, после этого <tex>0</tex> всегда является начальным состоянием | ||
| + | * Третий шаг алгоритма (<tex>rev(det(rev(FA)))</tex>): | ||
| [[Файл:Rdrfa.png|Третий шаг]] | [[Файл:Rdrfa.png|Третий шаг]] | ||
| − | * Заключительный шаг алгоритма | + | |
| + | После выполнения этого шага алгоритма оба состояния <tex>2</tex> и <tex>3</tex> являются начальными. | ||
| + | * Заключительный шаг алгоритма (<tex>det(rev(det(rev(FA))))</tex>): | ||
| [[Файл:Drdrfa.png|Заключительный шаг]] | [[Файл:Drdrfa.png|Заключительный шаг]] | ||
Версия 01:05, 27 декабря 2014
Эта статья находится в разработке!
| Задача: | 
| Пусть дан автомат . Требуется построить автомат с наименьшим количеством состояний, распознающий тот же язык, что и . | 
Алгоритм
Описание
Алгоритм минимизации конечных автоматов Бржозовского (Janusz A. (John) Brzozowski) выделяется, по крайней мере, следующими качествами:
- Он элегантен и весьма оригинален.
- Он эффективен.
- Он работает даже с недетерминированными конечными автоматами.
Обладая обычными процедурами обращения и детерминизации конечного автомата, мы, с помощью идеи Бржозовского, можем немедленно приступить к минимизации заданного автомата. Для этого надо дважды провести его через обе вышеуказанные процедуры:
, где
- это исходный КА,
- это процедура обращения КА,
- это процедура детерминизации КА,
- это минимизированный КА.
Корректность
Пример работы
- Исходный НКА ():
- Первый шаг алгоритма ():
- Второй шаг алгоритма ():
переименовывает состояния, после этого всегда является начальным состоянием
- Третий шаг алгоритма ():
После выполнения этого шага алгоритма оба состояния и являются начальными.
- Заключительный шаг алгоритма ():
См. также
- Минимизация ДКА, алгоритм за O(n^2) с построением пар различимых состояний
- Минимизация ДКА, алгоритм Хопкрофта (сложность O(n log n))





