3.1

Контекстно-свободные грамматики

[18/50%]
Показать
LaTeX
Пример 3.1

Рассмотрим контекстно-свободную грамматику G1=({S},{0,1},{SεS0S1},S)G_{1}=(\left\{ S\right\} ,\left\{ 0,1\right\} ,\left\{ S \rightarrow \varepsilon \text{, }S \rightarrow 0 S 1\right\} , S). Чему равен язык L(G1)L\left(G_{1}\right)?

?
Пример 3.2

Рассмотрим контекстно-свободную грамматику G2=({S,A,B},{a,b},RG_{2}=(\left\{ S, A, B\right\} , \left\{ a, b\right\} , R, SS), где RR состоит из следующих правил:

SABA,Aabb,BbSε. S \longrightarrow A B A, \quad A \longrightarrow a \mid b b, \quad B \longrightarrow b S \mid \varepsilon .

Чему равен язык L(G2)L\left(G_{2}\right)?

?
Пример 3.3

Найдите контекстно-свободную грамматику, порождающую язык

L={0n12nn0} L=\left\{ 0^{n} 1^{2 n} \mid n \geq 0\right\}
?
Пример 3.4

Найдите контекстно-свободную грамматику, порождающую язык

L={x{0,1}x=xR} L=\left\{ x \in \left\{ 0,1\right\} ^{*} \mid x=x^{R}\right\}
?
Пример 3.5

Найдите контекстно-свободную грамматику, порождающую язык

L={x{a,b} каждый префикс строки x содержит не меньше символов a, чем символов b}. L=\left\{ x \in \left\{ a, b\right\} ^{*} \mid \text{ каждый префикс строки } x \text{ содержит не меньше символов } a \text{, чем символов } b\right\} .
?
Пример 3.6

Найдите контекстно-свободную грамматику, порождающую

L={x{a,b}x содержит столько же символов a, сколько и символов b}. L=\left\{ x \in \left\{ a, b\right\} ^{*} \mid x \text{ содержит столько же символов } a \text{, сколько и символов } b\right\} .
?
Пример 3.8

Постройте контекстно-свободную грамматику, порождающую регулярный язык, допускаемый ДКА на рисунке 3.1.

Рисунок 3.1: ДКА для примера 3.8.Рисунок 3.1: ДКА для примера 3.8.

?
Пример 3.9

Постройте контекстно-свободную грамматику, порождающую регулярный язык, допускаемый НКА на рисунке 3.2(a).

Рисунок 3.2: Два НКА для примера 3.9.Рисунок 3.2: Два НКА для примера 3.9.

?
Пример 3.11

Пусть GG — регулярная грамматика со следующими правилами:

S01A00B11,A0B1C00,B0A1B,C01S. \begin{array}{ll} S \longrightarrow 01 A \mid 00 B \mid 11, & A \longrightarrow 0 B \mid 1 C \mid 00, \\ B \longrightarrow 0 A \mid 1 B, & C \longrightarrow 01 S. \end{array}

Постройте НКА, допускающий L(G)L(G).

?
Задача 3.1.1

Опишите словами и/или с помощью регулярных выражений язык, порождаемый каждой из следующих контекстно-свободных грамматик:

?
(a)

SaSabSbabS \longrightarrow a S a \mid b S b \mid a \mid b.

(b)

SaSbSεS \longrightarrow a S \mid b S \mid \varepsilon.

(c)

SaSSbaS \longrightarrow a S \mid S b \mid a.

(d)

SSSabS \longrightarrow S S \mid a \mid b.

(e)

SSSaSbεS \longrightarrow S S \mid a S b \mid \varepsilon.

(f)

SaSaSbSεS \longrightarrow a S \mid a S b S \mid \varepsilon.

Задача 3.1.2

Покажите, что ни одна строка языка L(G)L(G) не содержит подстроку bab a, где GG — контекстно-свободная грамматика со следующими правилами:

SaSbTa,TbTb. S \longrightarrow a S \mid b T \mid a, \quad T \longrightarrow b T \mid b.
?
Задача 3.1.3

Покажите, что в каждой строке языка L(G)L(G) символов aa больше, чем символов bb, где GG — грамматика со следующими правилами:

SSabSSSSbSbSa. S \longrightarrow S a \mid b S S \mid S S b \mid S b S \mid a.
?
Задача 3.1.4
?
(a)

Покажите, что следующая грамматика не порождает язык {x{0,1}x содержит столько же 0, сколько и 1 }\left\{ x \in \left\{ 0,1\right\}^{*} \mid x\text{ содержит столько же 0, сколько и 1 }\right\} :

S0S101S1S010SS01S10ε. S \longrightarrow 0 S 1 \mid 01 S \mid 1 S 0 \mid 10 S \mid S 01 \mid S 10 \mid \varepsilon .
(b)

Покажите, что следующая грамматика порождает язык {x{0,1}x содержит столько же 0, сколько и 1 }\left\{ x \in \left\{ 0,1\right\}^{*} \mid x\text{ содержит столько же 0, сколько и 1 }\right\} :

SSS0S11S0ε. S \longrightarrow S S \mid 0 S 1 \mid 1 S 0 \mid \varepsilon .
Задача 3.1.5

Для каждого из следующих регулярных языков постройте праволинейную грамматику и леволинейную грамматику для него:

?
(a)

10(0+1)1010(0+1)^{*} 10.

(b)

((0+11)10)\left((0+11)^{*} 10\right)^{*}.

(c)

Множество двоичных строк, не содержащих подстроку 000.

(d)

Множество двоичных строк, у которых суффикс длины десять начинается с 000.

Задача 3.1.6

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

?
(a)

SbaSbSεS \longrightarrow b a S \mid b S \mid \varepsilon.

(b)

SSabSbabbS \longrightarrow S a b \mid S b \mid a b \mid b.

(c)

SAB,AbaAbAε,BBabBbabbS \longrightarrow A \mid B, A \longrightarrow b a A \mid b A \mid \varepsilon , B \longrightarrow B a b \mid B b \mid a b \mid b.

(d)

SAB,AbaAbAε,BBabBbabbS \longrightarrow A B, A \longrightarrow b a A \mid b A \mid \varepsilon , B \longrightarrow B a b \mid B b \mid a b \mid b.

(e)

SAABB,AbaAbAε,BBabBbabbS \longrightarrow A A \mid B B, A \longrightarrow b a A \mid b A \mid \varepsilon , B \longrightarrow B a b \mid B b \mid a b \mid b.

Задача 3.1.7

Для каждой из следующих контекстно-свободных грамматик GG найдите эквивалентную регулярную грамматику:

?
(a)

SAabB,AaAbAε,BBabBbabbS \longrightarrow A a b B, A \longrightarrow a A \mid b A \mid \varepsilon , B \longrightarrow B a b \mid B b \mid a b \mid b.

(b)

SAB,AAaAbab,BaBabBεS \longrightarrow A B, A \longrightarrow A a \mid A b \mid a \mid b, B \longrightarrow a B \mid a b B \mid \varepsilon.

(c)

SAAB,AaAabAbab,BaBbBεS \longrightarrow A A \mid B, A \longrightarrow a A a \mid b A b \mid a \mid b, B \longrightarrow a B \mid b B \mid \varepsilon.

(d)

SAB,AaAabAbab,BaBbBεS \longrightarrow A B, A \longrightarrow a A a \mid b A b \mid a \mid b, B \longrightarrow a B \mid b B \mid \varepsilon.

Задача 3.1.8

Контекстно-свободная грамматика G=(V,Σ,R,S)G=(V, \Sigma , R, S) называется линейной, если каждое её правило имеет вид AxBA \rightarrow x B, или ABxA \rightarrow B x, или AxA \rightarrow x, где A,BVA, B \in V и xΣx \in \Sigma^{*}. Покажите, что язык, порождаемый линейной грамматикой, не обязательно регулярен.

?
Задача 3.1.9

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

?
(a)

{anbmmn,mn чётно }\left\{ a^{n} b^{m} \mid m \geq n, m-n\text{ чётно }\right\}.

(b)

{xcnx{a,b},#a(x)=n или #b(x)=n}\left\{ x c^{n} \mid x \in \left\{ a, b\right\}^{*}, \#_{a}(x)=n\text{ или }\#_{b}(x)=n\right\}, где #a(x)\#_{a}(x) обозначает число вхождений символа aa в строку xx.

(c)

{xcnx{a,b},#a(x)+#b(x)n}\left\{ x c^{n} \mid x \in \left\{ a, b\right\}^{*}, \#_{a}(x)+\#_{b}(x) \geq n\right\}.