|
|
Строка 39: |
Строка 39: |
| |statement= | | |statement= |
| Множество языков, допускаемых автоматами с <tex>\varepsilon</tex>-переходами, совпадает с множеством языков, допускаемых [[Детерминированные_конечные_автоматы|детерминированными конечными автоматами]]. | | Множество языков, допускаемых автоматами с <tex>\varepsilon</tex>-переходами, совпадает с множеством языков, допускаемых [[Детерминированные_конечные_автоматы|детерминированными конечными автоматами]]. |
− | |proof=[[Построение_по_НКА_эквивалентного_ДКА,_алгоритм_Томпсона|L(ДКА) = L(НКА)]]. По только что доказанной теореме, L(НКА) = L(<tex>\varepsilon</tex>-НКА). Значит, L(ДКА) = L(<tex>\varepsilon</tex>-НКА). | + | |proof=[[Построение_по_НКА_эквивалентного_ДКА,_алгоритм_Томпсона|<tex> \mathcal{L}(</tex>ДКА<tex>) = \mathcal{L}(</tex>НКА<tex>)</tex>]]. По только что доказанной теореме, L(НКА) = L(<tex>\varepsilon</tex>-НКА). Значит, L(ДКА) = L(<tex>\varepsilon</tex>-НКА). |
| }} | | }} |
| | | |
Версия 09:06, 17 января 2012
Автоматы с eps-переходами
Конечный автомат с [math]\varepsilon[/math]-переходами — конечный автомат, в котором есть возможность совершать переходы по [math]\varepsilon[/math].
Определение: |
[math]\varepsilon[/math]-НКА [math]A[/math] — это набор [math]A={\langle\Sigma,Q,s,T,\delta\rangle}[/math], где все компоненты имеют тот же смысл, что и для НКА, за исключением [math]\delta : Q\times \Sigma\bigcup\{\varepsilon\} \to \cal P[/math][math](Q)[/math]. |
Эквивалентность автоматов с переходами по строкам и НКА. Eps-замыкание
Рассмотрим автомат, в котором переходы осуществляются по строкам. Это переходы вида [math]\langle p,\alpha\beta\rangle\vdash\langle q,\beta\rangle[/math], где [math]\alpha,\beta[/math] — строки.
Теорема: |
|
Доказательство: |
[math]\triangleright[/math] |
Рассмотрим два случая:
- [math]\left | \alpha \right | \ge 1[/math]
- Заменим переходы по таким строкам на последовательности переходов по символам. А именно, пусть [math]\alpha=a_1a_2...a_n[/math], где [math]a_1,a_2,...,a_n[/math] — символы. Заменим переход [math]\langle p,\alpha\beta\rangle\vdash\langle q,\beta\rangle[/math] на переходы [math]{\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}.[/math]
- [math]\left | \alpha \right | = 0 \Rightarrow \alpha = \varepsilon[/math]
- Рассматриваем автомат [math]A[/math] с [math]\varepsilon[/math]-переходами. Для доказательства его эквивалентности НКА посторим его [math]\varepsilon[/math]-замыкание.
Определение: |
[math]\varepsilon[/math]-замыкание ([math]\varepsilon[/math]-closure) — построение по автомату с [math]\varepsilon[/math]-переходами эквивалентного ему автомата без [math]\varepsilon[/math]-переходов. |
Ход построения [math]\varepsilon[/math]-замыкания:
- Транзитивное замыкание
- Пусть [math]B[/math] — подграф [math]A[/math], в котором есть только [math]\varepsilon[/math]-переходы. Сделаем транзитивное замыкание графа [math]B[/math]. Таким образом, получим из автомата [math]A[/math] новый автомат [math]A_1[/math], который допускает тот же язык. Заметим, что если [math]A_1[/math] допускает слово [math]x[/math], то он допускает [math]x[/math], не совершая двух [math]\varepsilon[/math]-переходов подряд.
- Добавление допускающих состояний
- Пусть в [math]A_1[/math] есть [math]\varepsilon[/math]-переход из состояния [math]u[/math] в состояние [math]v[/math], причем [math]v[/math] — допускающее. Тогда, если текущее состояние [math]u[/math] и строка закончилась, то ее можно допустить. Во всех таких случаях сделаем [math]u[/math] допускающим. Получим автомат [math]A_2[/math], обладающий тем же свойством, что и [math]A_1[/math], а также не совершающий [math]\varepsilon[/math]-переходов в качестве последнего перехода.
- Добавление ребер
- Во всех случаях, когда [math]{\delta(u,\varepsilon)=v}, {\delta(v,c)=w}[/math], добавим переход [math]\delta(u,c)=w[/math]. Заметим, что если полученный автомат [math]A_3[/math] допускает [math]x[/math], то он допускает [math]x[/math] не совершая [math]\varepsilon[/math]-переходов.
- Устранение [math]\varepsilon[/math]-переходов
- Из предыдущего замечания следует, что если теперь устранить [math]\varepsilon[/math]-переходы, то допускаемый язык не изменится. Уберем из [math]A_3[/math] все [math]\varepsilon[/math]-переходы.
Получили НКА без [math]\varepsilon[/math]-переходов эквивалентный исходному автомату. |
[math]\triangleleft[/math] |
Совпадение множеств языков, допускаемых eps-НКА и ДКА