3.5

Автоматы с магазинной памятью и контекстно-свободные грамматики

[13/46%]
Показать
LaTeX
Пример 3.36

Рассмотрим контекстно-свободную грамматику G=({S},{a,b},R,S)G=(\left\{ S\right\} , \left\{ a, b\right\} , R, S) с правилами

S⟶aS∣aSbS∣ε. S \longrightarrow a S \mid a S b S \mid \varepsilon .

Постройте автомат с магазинной памятью MM, такой что L(M)=L(G)L(M)=L(G).

?
Пример 3.38

Постройте контекстно-свободную грамматику GG, такую что L(G)=L(M)L(G)= L(M), где MM — автомат с магазинной памятью из примера 3.29.

?
Пример 3.39

Покажите, что если AA — регулярный язык, а BB — контекстно-свободный язык, то A∩BA \cap B — контекстно-свободный язык.

?
Пример 3.40

Покажите, что L={0,1}∗−{(0m1m)n∣m,n≥1}L= \left\{ 0,1\right\}^{*}-\left\{ \left(0^{m} 1^{m}\right)^{n} \mid m, n \geq 1\right\} — контекстно-свободный язык.

?
Пример 3.41

Покажите, что если L1L_{1} — контекстно-свободный язык, а L2L_{2} — регулярный язык, то частное L1/L2L_{1} / L_{2} является контекстно-свободным языком.

?
Пример 3.42

Покажите, что если LL регулярен, то

L~={xz∣(∃y)[∣x∣=∣y∣=∣z∣,xyz∈L]} \widetilde{L}=\left\{ x z \mid (\exists y)[\left|x\right|=\left|y\right|=\left|z\right|, x y z \in L]\right\}

контекстно-свободен.

?
Задача 3.5.1

Для каждой из следующих контекстно-свободных грамматик GG, следуя процедуре из теоремы 3.35, постройте автомат с магазинной памятью, допускающий язык L(G)L(G):

?
(a)

S→ε∣aSbS∣bSaSS \rightarrow \varepsilon \mid a S b S \mid b S a S.

(b)

S⟶ε∣SS∣aSbS \longrightarrow \varepsilon \mid S S \mid a S b.

(c)

Грамматика из решения 2 примера 3.6.

(d)

Однозначная грамматика из примера 3.24(b).

(Теорема 3.35: Для любой контекстно-свободной грамматики G=(V,Σ,R,S)G=(V, \Sigma , R, S) существует автомат с магазинной памятью MM, такой что L(M)=L(G)L(M)=L(G). Построение: на входе xx сначала помещаем в стек начальный символ SS, затем моделируем левый вывод строки xx грамматикой GG — на каждом шаге, если верхний символ стека — нетерминал AA, выбираем правило A→wA \rightarrow w и заменяем AA на ww в стеке (символы ww помещаются по одному с помощью дополнительных временных состояний, поскольку автомат может поместить в стек лишь один символ за один шаг); если верхний символ — терминал aa, пытаемся сопоставить его со следующим входным символом, отвергая при несовпадении и иначе удаляя его из стека. Вход допускается ровно тогда, когда стек и вход одновременно исчерпаны.)

Задача 3.5.2

Для каждого из следующих автоматов с магазинной памятью MM, следуя процедуре из теоремы 3.37, постройте контекстно-свободную грамматику, порождающую язык L(M)L(M):

?
(a)

Автомат из примера 3.30.

(b)

Автомат с рисунка 3.14(a) (для языка {aibj∣2i=3j}\left\{ a^{i} b^{j} \mid 2 i=3 j\right\}).

(Теорема 3.37: Для любого автомата с магазинной памятью M=(Q,Σ,Γ,δ,q,F)M=(Q, \Sigma , \Gamma , \delta , q, F) существует контекстно-свободная грамматика GG, такая что L(G)=L(M)L(G)=L(M). Построение: сначала преобразуем MM в эквивалентный автомат M′M^{\prime }, который всегда просматривает верхний символ стека (на первом шаге помещаем в стек новый символ дна стека $, а также разрешаем M′M^{\prime } помещать в стек два символа за один шаг, чтобы по-прежнему можно было заменить один символ). Затем строим GG с нетерминалами ⟨q,A,p⟩\langle q, A, p\rangle — по одному на каждую пару состояний q,pq, p и символ стека AA, — призванными порождать в точности те строки xx, для которых M′M^{\prime } может перейти из (q,x,A)(q, x, A) в (p,ε,ε)(p, \varepsilon , \varepsilon ). Правила грамматики GG: (1) для каждой инструкции (p,B)∈δ′(q,a,A)(p, B) \in \delta^{\prime }(q, a, A) с ∣B∣=1\left|B\right|=1 добавляем ⟨q,A,r⟩→a⟨p,B,r⟩\langle q, A, r\rangle \rightarrow a\langle p, B, r\rangle для каждого состояния rr; (2) для каждой инструкции (p,BA)∈δ′(q,a,A)(p, B A) \in \delta^{\prime }(q, a, A) с ∣B∣=1\left|B\right|=1 (символ, помещаемый поверх AA) добавляем ⟨q,A,r⟩→a⟨p,B,r′⟩⟨r′,A,r⟩\langle q, A, r\rangle \rightarrow a\langle p, B, r^{\prime }\rangle \langle r^{\prime }, A, r\rangle для всех состояний r,r′r, r^{\prime }; и (3) для каждой инструкции (p,ε)∈δ′(q,a,A)(p, \varepsilon ) \in \delta^{\prime }(q, a, A) (снятие AA со стека без добавления новых символов) добавляем ⟨q,A,p⟩→a\langle q, A, p\rangle \rightarrow a. Начальный символ грамматики GG — это ⟨s1,$,f⟩\langle s_{1}, \$, f\rangle, где s1s_{1} и ff — новые начальное и конечное состояния автомата M′M^{\prime }.)

Задача 3.5.3

Постройте автоматы с магазинной памятью, допускающие следующие языки:

?
(a)

{0n1m∣m≠n,m≠2n,m≠3n}\left\{ 0^{n} 1^{m} \mid m \neq n, m \neq 2 n, m \neq 3 n\right\}.

(b)

{aibjck∣i≠j или j≠k или i≠k}\left\{ a^{i} b^{j} c^{k} \mid i \neq j\text{ или }j \neq k\text{ или }i \neq k\right\}.

(c)
  • {0,1}∗−{(0n1)n∣n≥1}\left\{ 0,1\right\}^{*}-\left\{ \left(0^{n} 1\right)^{n} \mid n \geq 1\right\}.
(d)
  • {0,1}∗−{bi#bi+1∣bi является двоичным представлением i,i≥1}\left\{ 0,1\right\}^{*}-\left\{ b_{i} \# b_{i+1} \mid b_{i}\text{ является двоичным представлением }i, i \geq 1\right\}.
Задача 3.5.4

Покажите, что если LL — регулярный язык, то каждый из следующих языков контекстно-свободен:

?
(a)

{x∈L∣x=xR}\left\{ x \in L \mid x=x^{R}\right\}.

(b)

{wy∣(∃x,z)[∣w∣=∣x∣=∣y∣=∣z∣,wxyz∈L]}\left\{ w y \mid (\exists x, z)[|w|=|x|=|y|=|z|, w x y z \in L]\right\}.

(c)
  • {yx∣(∃w,z)[∣w∣=∣x∣=∣y∣=∣z∣,wxyz∈L]}\left\{ y x \mid (\exists w, z)[|w|=|x|=|y|=|z|, w x y z \in L]\right\}.
(d)
  • {xz∣∣w∣=∣x∣=∣y∣=∣z∣,wxyz∈L}\left\{ x z||w|=|x|=|y|=|z|, w x y z \in L\right\}.
Задача 3.5.5

Покажите, что L1\L2L_{1} \backslash L_{2} — контекстно-свободный язык, если L1L_{1} контекстно-свободен, а L2L_{2} регулярен.

?
Задача 3.5.6

Автомат с двумя магазинными памятями (2-стековый автомат) — это автомат с магазинной памятью, имеющий два стека. На каждом шаге MM может, помимо входного символа, читать верхние символы обоих стеков и записывать символы в оба стека. Формально, 2-стековый автомат — это шестёрка M=(Q,Σ,Γ,δ,s,F)M=(Q, \Sigma , \Gamma , \delta , s, F), где Q,Σ,Γ,s,FQ, \Sigma , \Gamma , s, F имеют тот же смысл, что и для обычного автомата с магазинной памятью, а δ\delta — функция переходов

δ:Q×(Σ∪{ε})×(Γ∪{ε})2→2Q×(Γ∪{ε})2 \delta : Q \times (\Sigma \cup \left\{ \varepsilon \right\} ) \times (\Gamma \cup \left\{ \varepsilon \right\} )^{2} \rightarrow 2^{Q \times (\Gamma \cup \left\{ \varepsilon \right\} )^{2}}

Пусть a∈Σ∪{ε}a \in \Sigma \cup \left\{ \varepsilon \right\}, и u1,u2,v1,v2∈Γ∪{ε}u_{1}, u_{2}, v_{1}, v_{2} \in \Gamma \cup \left\{ \varepsilon \right\}. Тогда инструкция (p,v1,v2)∈δ(q,a,u1,u2)\left(p, v_{1}, v_{2}\right) \in \delta \left(q, a, u_{1}, u_{2}\right) означает, что автомат MM читает входной символ aa, верхний символ u1u_{1} стека 1, верхний символ u2u_{2} стека 2, а затем переходит в состояние pp, заменяет u1u_{1} на v1v_{1} и заменяет u2u_{2} на v2v_{2}.

?
(a)

Дайте формальное определение понятий конфигурации и следующей конфигурации 2-стекового автомата.

(b)

Постройте 2-стековый автомат, допускающий язык {anbncn∣n≥0}\left\{ a^{n} b^{n} c^{n} \mid n \geq 0\right\}.

(c)

Постройте 2-стековый автомат, допускающий язык {anbmcndm∣n≥m}\left\{ a^{n} b^{m} c^{n} d^{m} \mid n \geq m\right\}.

Задача 3.5.7

Автомат с магазинной памятью MM называется линейно ограниченным автоматом, если существует константа c>0c>0, такая что размер стека автомата MM в ходе вычисления на любом входе xx ограничен величиной c∣x∣c\left|x\right|. Покажите, что класс языков, допускаемых линейно ограниченными автоматами с магазинной памятью, в точности совпадает с классом контекстно-свободных языков.

?