Эквивалентность состояний ДКА — различия между версиями
Lidia2008 (обсуждение | вклад) (→Проверка эквивалентности автоматов) |
Lidia2008 (обсуждение | вклад) (→Проверка эквивалентности автоматов) |
||
Строка 17: | Строка 17: | ||
<font face="Times" size="3"> | <font face="Times" size="3"> | ||
− | *Если положить, что начальные состояния эквивалентны, то последовательно, переходя по одному символу из состояний, можем получить и другие пары эквивалентных состояний. Если же в одну из таких пар попадут допускающее состояния вместе с не допускающим, то такие <tex>q_i</tex> и <tex>q_j</tex> <em>неэквивалентны</em>. | + | *Если положить, что начальные состояния эквивалентны, то последовательно, переходя по одному символу из состояний, можем получить и другие пары эквивалентных состояний. Если же в одну из таких пар попадут допускающее состояния вместе с не допускающим, то такие <tex>q_i</tex> и <tex>q_j</tex> <em>неэквивалентны</em>.[[Файл:CheckEquival.png]] |
− | <tex> | + | *Таким образом получим разбиение множества <tex> Q_1\cup Q_2</tex> на множества эквивалентных состояний. После этого проверим, что никакое из этих множеств не содержит допускающее и не допускающее состояние одновременно, тогда автоматы эквивалентны. |
− | |||
− | |||
− | |||
− | |||
− | </tex> | ||
</font> | </font> | ||
+ | |||
+ | == Литература == | ||
+ | * Н.Н. Вояковская, А.Е. Москаль, Д.Ю. Булычев, А.А. Терехов - "Разработка компиляторов" |
Версия 07:28, 7 октября 2010
Эквивалентность автоматов
- Определение: Два автомата и называются эквивалентными, если они распознают один и тот же язык над алфавитом .
- Определение: Два состояния и называются эквивалентными , если верно, что . Из этого следует, что если два состояния и эквивалентны, то и состояния и будут эквивалентными для . Кроме того, т.к. переход может возникнуть только для конечного состояния , то никакое допускающее(терминальное) состояние не может быть эквивалентно не допускающему состоянию. Нахождение классов эквивалентных состояний внутри автомата и их совмещение в одно состояние используется в быстром алгоритме Хопкрофта для минимизации автомата, работающий за .
- Определение: Слово различает два состояния , если . Также, если слово различает состояния и такие, что и , то слово различает состояния и . Нахождение пар различных состояний в автомате используется в алгоритме минимизации автомата, работающий за .
- Пример двух эквивалентных автоматов:
Состояния
и допускающие.
Проверка эквивалентности автоматов
- Если положить, что начальные состояния эквивалентны, то последовательно, переходя по одному символу из состояний, можем получить и другие пары эквивалентных состояний. Если же в одну из таких пар попадут допускающее состояния вместе с не допускающим, то такие и неэквивалентны.
- Таким образом получим разбиение множества на множества эквивалентных состояний. После этого проверим, что никакое из этих множеств не содержит допускающее и не допускающее состояние одновременно, тогда автоматы эквивалентны.
Литература
- Н.Н. Вояковская, А.Е. Москаль, Д.Ю. Булычев, А.А. Терехов - "Разработка компиляторов"