Построение по НКА эквивалентного ДКА, алгоритм Томпсона
Построение эквивалентного ДКА по НКА
Пусть нам дан произвольный НКА: .
Построим по нему следующий ДКА: , где:
- ,
- ,
- ,
- .
Доказательство эквивалентности
| Теорема: |
Построенный ДКА эквивалентен данному НКА. |
| Доказательство: |
|
Докажем, что любое слово, которое принимает НКА, будет принято построенным ДКА. Заметим, что . Рассмотрим слово , которое принимает автомат НКА: . Проверим, что построенный ДКА тоже принимает это слово. Заметим, что , а, значит, исходя из нашего наблюдения, мы получаем, что , где . Далее, несложно заметить, что , где . Таким образом, , а из определения терминальных состояний в построенном ДКА мы получаем, что , то есть наш ДКА тоже принимает cлово . Докажем, что любое слово, которое принимает построенный ДКА, принимает и НКА. Сначала сделаем наблюдение, что если , и мы из него достигли по строке какого-то состояния , то существует путь из в в НКА по строке . Рассмотрим слово , которое принимает автомат ДКА: . Проверим, что НКА тоже принимает это слово. Так как , и мы из достигли , возьмём любое терминальное состояние . По нашему наблюдению в НКА есть путь из в по строке , а, значит, НКА принимает это слово. Таким образом, множества слов, допускаемых ДКА и НКА совпадают, то есть они эквивалентны. |
Пример
Алгоритм Томпсона
Данный алгоритм преобразовывает НКА в эквивалентный ДКА. Мы будем использовать предыдущий способ построения с одним дополнением - нам не нужны состояния недостижимые из стартового.
Поэтому в алгоритме используется обход в ширину.
Алгоритм
- очередь состояний, соответствующих множествам, состоящих из состояний НКА. - стартовое состояние НКА.
1: 2: 3: 4: 5: 6: 7: 8: ) 9: 10: 11:
Верхняя оценка на работу алгоритмы - - так как количество подмножеств множества состояний НКА не более, чем , а каждое подмножество мы обрабатываем за и ровно один раз.
