Автоматы с eps-переходами. Eps-замыкание — различия между версиями
м (→Автоматы с eps-переходами) |
м (→Эквивалентность автоматов с переходами по строкам и НКА. Eps-замыкание) |
||
Строка 7: | Строка 7: | ||
==Эквивалентность автоматов с переходами по строкам и НКА. Eps-замыкание== | ==Эквивалентность автоматов с переходами по строкам и НКА. Eps-замыкание== | ||
− | Рассмотрим автомат, в котором переходы осуществляются по строкам. Это переходы вида <tex>\langle p,\alpha\beta\rangle\vdash\langle q,\beta\rangle</tex>, где <tex>\alpha,\beta</tex> --- строки. | + | Рассмотрим автомат, в котором переходы осуществляются по строкам. Это переходы вида <tex>\langle p,\alpha\beta\rangle\vdash\langle q,\beta\rangle</tex>, где <tex>\alpha,\beta</tex> {{---}} строки. |
{{Теорема | {{Теорема | ||
|id=th1 | |id=th1 | ||
Строка 15: | Строка 15: | ||
Рассмотрим два случая: | Рассмотрим два случая: | ||
* <tex>\left | \alpha \right | \ge 1</tex> | * <tex>\left | \alpha \right | \ge 1</tex> | ||
− | *:Заменим переходы по таким строкам на последовательности переходов по символам. А именно, пусть <tex>\alpha=a_1a_2...a_n</tex>, где <tex>a_1,a_2,...,a_n</tex> --- символы. Заменим переход <tex>\langle p,\alpha\beta\rangle\vdash\langle q,\beta\rangle</tex> на переходы <tex>{\langle p,\alpha\beta\rangle\vdash\langle t_1, a_1^{-1}\alpha\beta\rangle},{\langle t_1,a_1^{-1}\alpha\beta\rangle\vdash\langle t_2,(a_1a_2)^{-1}\alpha\beta\rangle},...,{\langle t_{n-1}, a_n\rangle\vdash\langle q, \beta\rangle}.</tex> | + | *:Заменим переходы по таким строкам на последовательности переходов по символам. А именно, пусть <tex>\alpha=a_1a_2...a_n</tex>, где <tex>a_1,a_2,...,a_n</tex> {{---}} символы. Заменим переход <tex>\langle p,\alpha\beta\rangle\vdash\langle q,\beta\rangle</tex> на переходы <tex>{\langle p,\alpha\beta\rangle\vdash\langle t_1, a_1^{-1}\alpha\beta\rangle},{\langle t_1,a_1^{-1}\alpha\beta\rangle\vdash\langle t_2,(a_1a_2)^{-1}\alpha\beta\rangle},...,{\langle t_{n-1}, a_n\rangle\vdash\langle q, \beta\rangle}.</tex> |
* <tex>\left | \alpha \right | = 0 \Rightarrow \alpha = \varepsilon</tex> | * <tex>\left | \alpha \right | = 0 \Rightarrow \alpha = \varepsilon</tex> | ||
*:Рассматриваем '''автомат <tex>A</tex> с <tex>\varepsilon</tex>-переходами.''' Для доказательства его эквивалентности НКА посторим его <tex>\varepsilon</tex>-замыкание. | *:Рассматриваем '''автомат <tex>A</tex> с <tex>\varepsilon</tex>-переходами.''' Для доказательства его эквивалентности НКА посторим его <tex>\varepsilon</tex>-замыкание. | ||
*:{{Определение | *:{{Определение | ||
|definition= | |definition= | ||
− | <tex>\varepsilon</tex>-замыкание (<tex>\varepsilon</tex>-closure) --- построение по автомату с <tex>\varepsilon</tex>-переходами эквивалентного ему автомата без <tex>\varepsilon</tex>-переходов. | + | '''<tex>\varepsilon</tex>-замыкание''' ('''<tex>\varepsilon</tex>-closure''') {{---}} построение по автомату с <tex>\varepsilon</tex>-переходами эквивалентного ему автомата без <tex>\varepsilon</tex>-переходов. |
}} | }} | ||
Ход построения <tex>\varepsilon</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>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>u</tex> допускающим. Получим автомат <tex>A_2</tex>, обладающий тем же свойством, что и <tex>A_1</tex>, а также не совершающий <tex>\varepsilon</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>-переходов. |
Версия 23:41, 21 октября 2011
Автоматы с eps-переходами
Конечный автомат с
-переходами — конечный автомат, в котором есть возможность совершать переходы по .Определение: |
НКА, за исключением . | -НКА — это набор , где все компоненты имеют тот же смысл, что и для
Эквивалентность автоматов с переходами по строкам и НКА. Eps-замыкание
Рассмотрим автомат, в котором переходы осуществляются по строкам. Это переходы вида
, где — строки.Теорема: | ||
Автоматы с переходами по строкам эквивалентны недетерминированным конечным автоматам. | ||
Доказательство: | ||
Рассмотрим два случая:
Ход построения -замыкания:
| ||
Совпадение множеств языков, допускаемых eps-НКА и ДКА
Утверждение: |
Множество языков, допускаемых автоматами с детерминированными конечными автоматами. -переходами, совпадает с множеством языков, допускаемых |
L(ДКА) = L(НКА). По только что доказанной теореме, L(НКА) = L( -НКА). Значит, L(ДКА) = L( -НКА). |