Автоматы с eps-переходами. Eps-замыкание — различия между версиями
YanaZimka (обсуждение | вклад) |
м (ё) |
||
Строка 27: | Строка 27: | ||
#:Пусть <tex>B</tex> {{---}} подграф <tex>A</tex>, в котором есть только <tex>\varepsilon</tex>-переходы. Сделаем транзитивное замыкание графа <tex>B</tex>. Таким образом, получим из автомата <tex>A</tex> новый автомат <tex>A_1</tex>, который допускает тот же язык. Заметим, что если <tex>A_1</tex> допускает слово <tex>x</tex>, то он допускает <tex>x</tex>, не совершая двух <tex>\varepsilon</tex>-переходов подряд. | #:Пусть <tex>B</tex> {{---}} подграф <tex>A</tex>, в котором есть только <tex>\varepsilon</tex>-переходы. Сделаем транзитивное замыкание графа <tex>B</tex>. Таким образом, получим из автомата <tex>A</tex> новый автомат <tex>A_1</tex>, который допускает тот же язык. Заметим, что если <tex>A_1</tex> допускает слово <tex>x</tex>, то он допускает <tex>x</tex>, не совершая двух <tex>\varepsilon</tex>-переходов подряд. | ||
#Добавление допускающих состояний | #Добавление допускающих состояний | ||
− | #:Пусть в <tex>A_1</tex> есть <tex>\varepsilon</tex>-переход из состояния <tex>u</tex> в состояние <tex>v</tex>, причем <tex>v</tex> {{---}} допускающее. Тогда, если текущее состояние <tex>u</tex> и строка закончилась, то | + | #:Пусть в <tex>A_1</tex> есть <tex>\varepsilon</tex>-переход из состояния <tex>u</tex> в состояние <tex>v</tex>, причем <tex>v</tex> {{---}} допускающее. Тогда, если текущее состояние <tex>u</tex> и строка закончилась, то её можно допустить. Во всех таких случаях сделаем <tex>u</tex> допускающим. Получим автомат <tex>A_2</tex>, обладающий тем же свойством, что и <tex>A_1</tex>, а также не совершающий <tex>\varepsilon</tex>-переходов в качестве последнего перехода. |
− | #Добавление | + | #Добавление рёбер |
#:Во всех случаях, когда <tex>{\delta(u,\varepsilon)=v}, {\delta(v,c)=w}</tex>, добавим переход <tex>\delta(u,c)=w</tex>. Заметим, что если полученный автомат <tex>A_3</tex> допускает <tex>x</tex>, то он допускает <tex>x</tex>, не совершая <tex>\varepsilon</tex>-переходов. | #:Во всех случаях, когда <tex>{\delta(u,\varepsilon)=v}, {\delta(v,c)=w}</tex>, добавим переход <tex>\delta(u,c)=w</tex>. Заметим, что если полученный автомат <tex>A_3</tex> допускает <tex>x</tex>, то он допускает <tex>x</tex>, не совершая <tex>\varepsilon</tex>-переходов. | ||
#Устранение <tex>\varepsilon</tex>-переходов | #Устранение <tex>\varepsilon</tex>-переходов |
Версия 00:09, 31 января 2017
Содержание
Автоматы с -переходами
Конечный автомат с
-переходами — конечный автомат, в котором есть возможность совершать переходы по .Определение: |
НКА, за исключением . | -НКА или НКА с -переходами (англ. -moves) — набор , где все компоненты имеют тот же смысл, что и для
Эквивалентность автоматов с переходами по строкам и НКА. -замыкание
Будем называть два автомата эквивалентными, если они задают один и тот же язык.
Рассмотрим автомат, в котором переходы осуществляются по строкам. Это переходы вида , где — строки.
Теорема: | ||
Автоматы с переходами по строкам эквивалентны недетерминированным конечным автоматам. | ||
Доказательство: | ||
Рассмотрим два случая:
Ход построения -замыкания:
| ||
Совпадение множеств языков, допускаемых -НКА и ДКА
Утверждение: |
Множество языков, допускаемых автоматами с детерминированными конечными автоматами. -переходами, совпадает с множеством языков, допускаемых |
. По только что доказанной теореме, ДКА НКА НКА -НКА . Значит, ДКА -НКА . |
Применение
В некоторых случаях НКА с теоремы Клини.
-переходами строятся проще, чем просто НКА и тем более ДКА для тех же языков. Доказанная выше эквивалентность ДКА , НКА и -НКА позволяет нам при помощи алгоритма -замыкания легко приводить одно к другому и далее к третьему. Также свойства, доказанные выше, являются важной составляющей доказательстваСм. также
- Недетерминированные конечные автоматы
- Теорема Клини (совпадение классов автоматных и регулярных языков)