Изменения

Перейти к: навигация, поиск
Построение эквивалентного ДКА по НКА
[[Категория: Теория формальных языков]]
== Построение эквивалентного ДКА по НКА ==
НКА: <tex>\langle \Sigma , Q, s \in Q, T \subset Q, \delta : Q \times \Sigma \to P(Q) \rangle</tex>.
ДКАПусть нам дан произвольный НКА: <tex>\langle \Sigma , описанный в следующих строках является эквивалентным НКАQ, s \in Q, T \subset Q, \delta : Q \times \Sigma \to P(Q) \rangle</tex>.
Построим по нему следующий ДКА: <tex>\langle \Sigma , Q_d, s_d \in Q_d, T_d \subset Q_d, \delta_d : Q_d \times \Sigma \to Q_d \rangle</tex>, где:# <tex>Q_d = 2^Q</tex>.,# <tex>s_d = \{s\}</tex>.,# <tex>T_d = \{q \in Q_d | \exists p \in T : p \in q\}</tex>.,# <tex>\delta_d(q, c) = \cup_bigcup\limits_{i=1}^{ma \in q} \delta(a_ia, c)</tex> при условии, что <tex>q = \{a_1, ..., a_m\}</tex>.
===Доказательство эквивалентности===
<tex>1.</tex> Докажем, что любое слово, которое принимает НКА, будет принято построенным ДКА.
&nbsp;&nbsp;&nbsp;&nbsp;Сначала сделаем наблюдениеЗаметим, что если <tex>\forall q \in q_d</tex>, и <tex>\forall c</tex> является символом перехода\in \Sigma, то <tex>\forall p \in \delta(q, c)</tex>: <tex>p \in \delta_Ddelta_d(q_d, c)</tex>.
&nbsp;&nbsp;&nbsp;&nbsp;Рассмотрим слово <tex>w</tex>, которое принимает автомат НКА: <tex>\langle s, w_1w_2...w_m \rangle \vdash \langle u_1, w_2...w_m \rangle \vdash \langle u_m, \varepsilon \rangle</tex>, и <tex>u_m \in T</tex>.
&nbsp;&nbsp;&nbsp;&nbsp;Проверим, что построенный ДКА тоже принимает это слово.
&nbsp;&nbsp;&nbsp;&nbsp;Заметим, что <tex>s \in s_d</tex>, а, значит, исходя из нашего наблюдения , мы получаем, что <tex>u_1 \in {u_d}_1</tex>, где <tex>{u_d}_1 = \delta_d(s, w_1)</tex>.
&nbsp;&nbsp;&nbsp;&nbsp;Далее , несложно заметить, что <tex>\forall i \leq m : u_i \in {u_d}_i</tex>, где <tex>\langle s_d, w_1w_2...w_m \rangle \vdash \langle {u_d}_1, w_2...w_m \rangle \vdash \langle {u_d}_i, w_{i + 1}...w_m \rangle</tex>.
&nbsp;&nbsp;&nbsp;&nbsp;Таким образом, <tex>u_m \in {u_d}_m</tex>, а из определения терминальных состояний в построенном ДКА мы получаем, что <tex>{u_d}_m \in T_d</tex>, а, значит, то есть наш ДКА, тоже принимает cлово <tex>w</tex>.
<tex>2.</tex> Докажем, что любое слово, которое принимает построенный ДКА, принимает и НКА.
&nbsp;&nbsp;&nbsp;&nbsp;Сначала сделаем наблюдение, что если <tex>q_d=\{q\}</tex>, и мы из него достигли по строке <tex>S</tex> какого-то состояния <tex>p_d</tex>, то <tex>\forall p \in p_d</tex>: существует путь из <tex>q</tex> в <tex>p</tex> в НКА по строке <tex>S</tex>.
&nbsp;&nbsp;&nbsp;&nbsp;Рассмотрим слово <tex>w</tex>, которое принимает автомат ДКА: <tex>\langle s_d, w_1w_2...w_m \rangle \vdash \langle {u_d}_1, w_2...w_m \rangle \vdash \langle {u_d}_m, \varepsilon \rangle</tex>, и <tex>{u_d}_m \in T_d</tex>.
&nbsp;&nbsp;&nbsp;&nbsp;Проверим, что НКА тоже принимает это слово.
&nbsp;&nbsp;&nbsp;&nbsp;А так Так как <tex>s_d = \{s\}</tex>, и мы из <tex>s_d</tex> достигли <tex>{s_du_d}_m \in T_d</tex>, возьмём любое терминальное состояние <tex>u_m \in {u_d}_m</tex>, то - по . По нашему наблюдению, в НКА есть путь из <tex>s</tex> в <tex>u_m</tex> по нужной строке<tex>w</tex>, а, значит, что НКА принимает это слово.
&nbsp;&nbsp;&nbsp;&nbsp;ПолучаетсяТаким образом, что мы доказалимножества слов, что если допускаемых ДКА и НКА принимает слово, равносильно тому, что ДКА его тоже принимает. &nbsp;&nbsp;&nbsp;&nbsp;А это означаетсовпадают, что автоматы то есть они эквивалентны.
}}

Навигация