Изменения

Перейти к: навигация, поиск
Построение КС-грамматики по МП-автомату: викисписок
Правила вывода <tex>P</tex> построим следующим образом:
1) # для каждого состояния <tex>p \in Q</tex> добавим правило <tex>S \rightarrow [q_0 z_0 p]</tex>; 2) # для каждого перехода <tex>(r_0, \gamma_1 \gamma_2 \ldots \gamma_k) \in \delta(p, a, X)</tex> сделаем следующее: для всех упорядоченных списков состояний <tex>\{r_1, r_2 \ldots r_k\} \in Q^k</tex> добавим правило <tex>[p X r_k] \rightarrow a [r_0 \gamma_1 r_1] [r_1 \gamma_2 r_2] \ldots [r_{k - 1} \gamma_k r_k]</tex>, если <tex>k > 0</tex>, и <tex>[p X r_0] \rightarrow a</tex>, если <tex>k = 0</tex>.
Нетерминал <tex>[pXq]</tex>, должен выводить только те строки <tex>w</tex>, которые переводят автомат из состояния <tex>(p, X)</tex> в <tex>(q, \varepsilon)</tex>. Формально это можно записать следующим образом: <tex>[pXq] \Rightarrow^* w \iff (p, w, X) \vdash^* (q, \varepsilon, \varepsilon)</tex>. Докажем это утверждение:
* <tex>A \rightarrow e</tex>.
Упростим грамматику, заменив <tex>A</tex> на <tex>S</tex> (очевидно, она не поменяется), и получим в результате <tex>\Gamma = \langle\{i,e\}, \{S\}, S, \{S \rightarrow iSS | e\}\rangle</tex>
 
=== Эквивалентность языков МП-автоматов и КС-языков===

Навигация