Автоматы с eps-переходами. Eps-замыкание — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м
Строка 1: Строка 1:
{{В разработке}}
 
 
[[Категория: Теория формальных языков]]
 
[[Категория: Теория формальных языков]]
 +
==Автоматы с eps-переходами==
 +
Конечный автомат с <tex>\varepsilon</tex>-переходами --- конечный автомат, в котором есть возможность совершать переходы по <tex>\varepsilon</tex>. Формально, <tex>\varepsilon</tex>-НКА <tex>A</tex> можно представить в виде <tex>A={\langle\Sigma,Q,s,T,\delta\rangle}</tex>, где все компоненты имеют тот же смысл, что и для [[Недетерминированные конечные автоматы|НКА]], за исключением <tex>\delta : Q\times \Sigma\bigcup\{\varepsilon\} \to \rho(Q)</tex>.
 
==Эквивалентность автоматов с переходами по строкам и НКА. Eps-замыкание.==
 
==Эквивалентность автоматов с переходами по строкам и НКА. Eps-замыкание.==
 
Рассмотрим автомат, в котором переходы  осуществляются по строкам. Это переходы вида <tex><p,\alpha\beta>\vdash<q,\beta></tex>, где <tex>\alpha,\beta</tex> --- строки.
 
Рассмотрим автомат, в котором переходы  осуществляются по строкам. Это переходы вида <tex><p,\alpha\beta>\vdash<q,\beta></tex>, где <tex>\alpha,\beta</tex> --- строки.

Версия 22:15, 6 октября 2010

Автоматы с 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 \rho(Q)[/math].

Эквивалентность автоматов с переходами по строкам и НКА. Eps-замыкание.

Рассмотрим автомат, в котором переходы осуществляются по строкам. Это переходы вида [math]\lt p,\alpha\beta\gt \vdash\lt q,\beta\gt [/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]\lt p,\alpha\beta\gt \vdash\lt q,\beta\gt [/math] на переходы [math]{\lt p,\alpha\beta\gt \vdash\lt t_1, a_1^{-1}\alpha\beta\gt },{\lt t_1,a_1^{-1}\alpha\beta\gt \vdash\lt t_2,(a_1a_2)^{-1}\alpha\beta\gt },...,{\lt t_{n-1}, a_n\gt \vdash\lt q, \beta\gt }.[/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]-замыкания:

  1. Транзитивное замыкание
    Пусть [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]-переходов подряд.
  2. Добавление допускающих состояний
    Пусть в [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]-переходов в качестве последнего перехода.
  3. Добавление ребер
    Во всех случаях, когда [math]{\delta(u,\varepsilon)=v}, {\delta(v,c)=w}[/math] добавим переход [math]\delta(u,v)=c[/math]. Заметим, что если полученный автомат [math]A_3[/math] допускает [math]x[/math], то он допускает [math]x[/math] не совершая [math]\varepsilon[/math]-переходов.
  4. Устранение [math]\varepsilon[/math]-переходов
    Из предыдущего замечания следует, что если теперь устранить [math]\varepsilon[/math]-переходы, то допускаемый язык не изменится. Уберем из [math]A_3[/math] все [math]\varepsilon[/math]-переходы.
Получили НКА без [math]\varepsilon[/math]-переходов эквивалентный исходному автомату.
[math]\triangleleft[/math]

Совпадение множеств языков, допускаемых eps-НКА и ДКА

Утверждение:
Множество языков, допускаемых автоматами с [math]\varepsilon[/math]-переходами, совпадает с множеством языков, допускаемых детерминированными конечными автоматами.
[math]\triangleright[/math]
L(ДКА) = L(НКА). По только что доказанной теореме, L(НКА) = L([math]\varepsilon[/math]-НКА). Значит, L(ДКА) = L([math]\varepsilon[/math]-НКА).
[math]\triangleleft[/math]