Минимизация автоматов-распознавателей
Перейдем теперь к задаче минимизации конечных автоматов, т.е. к проблеме построения минимального автомата, распознающего тот же язык, что и заданный конечный автомат.
Под минимизацией автомата-распознавателя подразумевается построение минимального автомата кого, что:
1) он обладает минимальным числом состояний;
2) является эквивалентным исходному автомату, т.е. распознает один и тот же язык.
Описание алгоритма минимизации конечного автомата:
1.Находим и удаляем в начальном КА все недостижимые и непродуктивные состояния.
Пример: В следующем КА состояние q3 – недостижимое.
Пример: В следующем КА состояние q3 – непродуктивное.
2.Затем необходимо найти такое разбиение множества всех оставшиехся состояний автомата, чтобы каждое подмножество содержало неразличимые состояния. То есть множества состояний автомата разделяются на классы эквивалентности:
a) В I-й класс относим все конечные/финальные состояния (то есть состояния из множества F);
b) Во II-й класс относим все остальные состояния (то есть Q\F).
Назовем эти состояния 0-эквивалентными.
3. Строим новое одно-эквивалентное разбиение, выделив те состояния, которые по одинаковым символам переходят в 0-эквивалентные состояния.
4. Повторяется шаг 3, последовательно создавая (n+1)-эквивалентные состояния по n-эквивалентным, увеличивая так число классов эквивалентности.
5. Алгоритм заканчивается, когда (n+1)-эквивалентные состояния совпадают с n-эквивалентными.
Каждый полученный класс эквивалентности будет новым состоянием в новом минимизированном автомате.
В множество F' автомата внесём те состояния, которые содержат хотя бы одно финальное состояние из начального.
Полученный, минимизированный КА должен быть эквивалентен начальному КА.
Если на некотором шаге при нахождении k-эквивалентных состояний, состояния и
попадают в разные классы эквивалентности
, то на шаге k+1 данные состояния не могут войти в один класс
разбиения.
Пример.Пусть задан конечный автомат-распознаватель , где
,
,
, а функция переходов
задана графом переходов и расширенной таблицей переходов:
Рис. 1 Граф переходов
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | |
a | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
b | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Первый шаг.
Исходное разбиение содержит два класса:
Далее, разбиение в один блок объединяет те состояния, которые нельзя различить при подаче цепочек длиной 1, т.е. те, которые под воздействием одного и того же входного сигнала переходят в один и тот же блок разбиения
.
Поэтому:
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | |
a | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
b | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
a | Х | |||||||||
b | Х |
Следующее разбиение в один блок объединяет те состояния, которые нельзя различить при подаче цепочек длиной 2, т.е. те, которые под воздействием одного и того же входного сигнала переходят в один и тот же блок предыдущего разбиения
. Итак:
Разбиение совпадает с разбиением
. На основании теоремы искомое разбиение
совпадает с
. Таким образом, минимальный автомат с эквивалентным поведением имеет 4 состояния, представляющих блоки разбиения
.
Введем следующие переобозначения: ,
,
,
.
Тогда таблица переходов этого минимизированного автомата представлена в таблице:
![]() | ![]() | ![]() | ![]() | |
a | ![]() | ![]() | ![]() | ![]() |
b | ![]() | ![]() | ![]() | ![]() |
Начальным состоянием здесь является состояние , заключительными - два состояния
и
.
Рис. 1 Граф переходов минимизированного автомата
Дата добавления: 2020-12-11; просмотров: 731;