Автоматы с eps-переходами. Eps-замыкание — различия между версиями
м |
|||
| Строка 1: | Строка 1: | ||
{{В разработке}} | {{В разработке}} | ||
[[Категория: Теория формальных языков]] | [[Категория: Теория формальных языков]] | ||
| − | Рассмотрим автомат, | + | Рассмотрим автомат, в котором переходы осуществляются по строкам. Это переходы вида <tex><p,\alpha\beta>\vdash<q,\beta></tex>, где <tex>\alpha,\beta</tex> --- строки. |
{{Теорема | {{Теорема | ||
|id=th1 | |id=th1 | ||
|about=Об эквивалентности автоматов с переходами по строкам и НКА | |about=Об эквивалентности автоматов с переходами по строкам и НКА | ||
|statement= | |statement= | ||
| − | Автоматы с переходами по строкам эквивалентны недетерминированным автоматам. | + | Автоматы с переходами по строкам эквивалентны [[Недетерминированные_конечные_автоматы|недетерминированным конечным автоматам]]. |
|proof= | |proof= | ||
Рассмотрим два случая: | Рассмотрим два случая: | ||
* <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><p,\alpha\beta>\vdash<q,\beta></tex> на переходы <tex>{<p,\alpha\beta>\vdash<t_1, a_1^{-1}\alpha\beta>},{<t_1,a_1^{-1}\alpha\beta>\vdash<t_2,(a_1a_2)^{-1}\alpha\beta>},...,{<t_{n-1}, a_n>\vdash<q, \beta>}.</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>-замыкание. | ||
| Строка 18: | Строка 19: | ||
Ход построения <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>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,v)=c</tex>. Заметим, что если полученный автомат <tex>A_3</tex> допускает <tex>x</tex>, то он допускает | + | #:Во всех случаях, когда <tex>{\delta(u,\varepsilon)=v}, {\delta(v,c)=w}</tex> добавим переход <tex>\delta(u,v)=c</tex>. Заметим, что если полученный автомат <tex>A_3</tex> допускает <tex>x</tex>, то он допускает <tex>x</tex> не совершая <tex>\varepsilon</tex>-переходов. |
#Устранение <tex>\varepsilon</tex>-переходов | #Устранение <tex>\varepsilon</tex>-переходов | ||
#:Из предыдущего замечания следует, что если теперь устранить <tex>\varepsilon</tex>-переходы, то допускаемый язык не изменится. Уберем из <tex>A_3</tex> все <tex>\varepsilon</tex>-переходы. | #:Из предыдущего замечания следует, что если теперь устранить <tex>\varepsilon</tex>-переходы, то допускаемый язык не изменится. Уберем из <tex>A_3</tex> все <tex>\varepsilon</tex>-переходы. | ||
| Строка 31: | Строка 32: | ||
|about=Об автоматах с <tex>\varepsilon</tex>-переходами и ДКА | |about=Об автоматах с <tex>\varepsilon</tex>-переходами и ДКА | ||
|statement= | |statement= | ||
| − | Множество языков, допускаемых автоматами с <tex>\varepsilon</tex>-переходами, совпадает с множеством языков, допускаемых | + | Множество языков, допускаемых автоматами с <tex>\varepsilon</tex>-переходами, совпадает с множеством языков, допускаемых [[Детерминированные_конечные_автоматы|детерминированными конечными автоматами]]. |
| − | |proof= | + | |proof=[[Построение_по_НКА_эквивалентного_ДКА,_алгоритм_Томпсона|L(ДКА) = L(НКА)]]. По только что доказанной теореме, L(НКА) = L(<tex>\varepsilon</tex>-НКА). Значит, L(ДКА) = L(<tex>\varepsilon</tex>-НКА). |
}} | }} | ||
Версия 20:55, 6 октября 2010
Эта статья находится в разработке!
Рассмотрим автомат, в котором переходы осуществляются по строкам. Это переходы вида , где --- строки.
| Теорема (Об эквивалентности автоматов с переходами по строкам и НКА): | ||
Автоматы с переходами по строкам эквивалентны недетерминированным конечным автоматам. | ||
| Доказательство: | ||
|
Рассмотрим два случая:
Ход построения -замыкания:
| ||
| Утверждение (Об автоматах с -переходами и ДКА): |
Множество языков, допускаемых автоматами с -переходами, совпадает с множеством языков, допускаемых детерминированными конечными автоматами. |
| L(ДКА) = L(НКА). По только что доказанной теореме, L(НКА) = L(-НКА). Значит, L(ДКА) = L(-НКА). |