Решение избранных задач по ... - uCoz

29
федеральное агентство по образованию московский государственный индустриальный университет кафедра информационные системы и технологии информационно-вычислительный центр Автор курса: Абрамов И.В. Решение избранных задач по курсу Теория Автоматов, Языков и Вычислений Авторы решений: Алексеев М.А. Алексеев С.А. Моргунов С.А. Москва 2006 25.12

Transcript of Решение избранных задач по ... - uCoz

Page 1: Решение избранных задач по ... - uCoz

федеральное агентство по образованиюмосковский государственный индустриальный университет

кафедра «информационные системы и технологии»информационно-вычислительный центр

Автор курса:Абрамов И.В.

Решение избранных задач по курсу«Теория Автоматов, Языков и Вычислений»

Авторы решений:Алексеев М.А.Алексеев С.А.Моргунов С.А.

Москва 200625.12

Page 2: Решение избранных задач по ... - uCoz

2

1. Приведите примеры не менее чем пяти языков в алфавитеΣ = a, b, c, d, e.

Теория.Определение. Языком в алфавите Σ называется множество цепочек вΣ.Решение.

L1 = ab, bc, cd, deL2 = aibicidiei | i > 0L3 = ωωR | ω ∈ a, b, c, d, e∗L4 = (ae)i(bdc)j | j − 1 = i > 0L5 = dead, bad

2. Напишите регулярные выражения для следующих языков:(a) множество цепочек над алфавитом a, b, c, содержащих хотя

бы один символ a и хотя бы один символ b;(б) множество цепочек из нулей и единиц, в которых десятый от

правого края символ равен 1;(в) множество цепочек из нулей и единиц, содержащих не более

одной пары последовательных единиц.

Теория.Определение. Регулярные выражения в алфавите Σ и регулярные мно-жества, которые они обозначают, определяются рекурсивно следующимобразом:(1) ø — регулярное выражение, обозначающее регулярное множество

ø,(2) ε — регулярное выражение, обозначающее регулярное множество

ε,(3) если a ∈ Σ, то a — регулярное выражение, обозначающее регуляр-

ное множество a,(4) если p и q — регулярные выражение, обозначающие регулярные

множества P и Q соответсвенно, то(a) (p + q) — регулярное выражение, обозначающее P ∪Q;(b) (pq) — регулярное выражение, обозначающее PQ;(c) (p)∗ — регулярное выражение, обозначающее P ∗;

(5) ничто другое не является регулярным выражением.

Решение.(a) (a + b + c)∗((a+(a + c)∗b+) + (b+(b + c)∗a+))(a + b + c)∗

(б) (0 + 1)∗1(0 + 1)9

(в) (0 + 10)∗(11)?(0 + 01)∗

Page 3: Решение избранных задач по ... - uCoz

3

3. Постройте праволинейные грамматики для языков, состоящих из(a) идентификаторов произвольной длины, состоящих из букв и

цифр, но начинающихся с буквы (например, как в языке Си);(б) идентификаторов, которые должны содержать от одного до

шести символов и начинаться с буквы I, J, K, L, M или N ;(в) целочисленные константы языка Си (напомним, что целочис-

ленные константы в Си бывают восьмеричные, десятичные ишестнадцатеричные, а в конце может следовать суффикс, за-дающий тип и знаковость константы);

(г) вещественных констант языка Си;(д) всех цепочек из нулей и единиц, имеющих чётное число нулей

и чётное число единиц.

Теория.Грамматика G называется праволинейной, если каждое правило из P

имеет вид A → xB или A → x, где A,B ∈ N,x ∈ Σ∗.Решение.(a) S → aA′ | . . . | zA′ | AA′ | . . . | ZA′

A′ → aA′ | . . . | ZA′ | 0A′ | . . . | 9A′ | ε

(б) S → IA′ | . . . | NA′

A′ → aB′ | . . . | ZB′ | 0B′ | . . . | 9B′ | εB′ → . . .C ′ → . . .D′ → . . .E ′ → a | . . . | Z | 0 | . . . | 9 | ε

(в) S → 0A′ | 0D′ | . . . | 9D′

A′ → xB′ | 0C ′ | . . . | 7C ′

B′ → 0B′ | 1B′ | . . . | 9B′ | aB′ | . . . | fB′ | AB′ | . . . | FB′ |0z′ | 1z′ | . . . | 9z′ | az′ | . . . | fz′ | Az′ | . . . | Fz′

C ′ → OC ′ | . . . | 7C ′ | z′

D′ → OD′ | . . . | 9D′ | z′

z′ → u | l | ul | lu | U | L | UL | LU | ε

(г) S → 0S | . . . | 9S | .A | 0A | . . . | 9A | 0D | . . . | 9DA → 0A | . . . | 9A | eD | e−D | e + D | 0D | . . . | 9DD → 0D | . . . | 9D | z′

z′ → l | L | ε

Page 4: Решение избранных задач по ... - uCoz

4

(д) A → 0C | 1B | εB → 0D | 1AC → 0A | 1DD → 0B | 1C

4. Постройте КС-грамматики, порождающие(a) все цепочки из нулей и единиц с одинаковым числом тех и

других;(б) a1a2 . . . anan . . . a2a1 | ai ∈ 0, 1, 1 6 i 6 n;(в) 0i1j | i 6= j и i, j > 0;(г) всевозможные последовательности правильно расставленных

скобок.

Теория.Грамматика G называется контекстно-свободной, если каждое правилоиз P имеет вид A → α, где A ∈ N,α ∈ (N ∪ Σ)∗.Решение.(a) S → 0AS | A0S | ε

A → 0AA | AA0 | 1

(б) S → 0S0 | 1S1 | ε

(в) S → 0S1 | AA → 1B | 0C | 1 | 0B → 1B | 1C → 0C | 0

(г) S → (S) | ()S | ε

5. Следующая грамматика порождает язык регулярного выражения0∗1(0 + 1)∗.

S → A1BA → 0A | εB → 0B | 1B | ε

Запишите левый и правый вывод, а также нарисуйте деревья вы-вода следующих цепочек:(a) 00101;(б) 1001;(в) 00011.

Page 5: Решение избранных задач по ... - uCoz

5

Теория.Определение. Вывод, при котором каждый раз правило применяетсяк самому левому нетерминалу, называется левым выводом. Аналогичноопределяется правый вывод.Определение. Дерево вывода в грамматике G = (N,Σ, P, S) — это по-меченное упорядоченное дерево, каждая вершина которого помеченасимволом из множества N ∪ Σ ∪ ε. Если внутренняя вершина поме-чена символом A, а ее прямые потомки — символами X1X2 . . . Xn, тоA → X1X2 . . . Xn — правило этой грамматики.Решение.(a) левый вывод: S → A1B → 0A1B → 00A1B → 001B →

0010B → 00101B → 00101правый вывод: S → A1B → A10B → A101B → A101 →0A101 → 00A101 → 00101

(б) левый вывод: S → A1B → 1B → 10B → 100B → 1001B →1001правый вывод: S → A1B → A10B → A100B → A1001B →A1001 → 1001

Page 6: Решение избранных задач по ... - uCoz

6

(в) левый вывод: S → A1B → 0A1B → 00A1B → 000A1B →0001B → 00011B → 00011правый вывод: S → A1B → A11B → A11 → 0A11 → 00A11 →000A11 → 00011

Page 7: Решение избранных задач по ... - uCoz

7

6. Постройте КЗ-грамматики, порождающие(a) an2 | n > 1;(б) ωω | ω ∈ a, b+;(в) ω | ω ∈ a, b, c+ и число букв a в цепочке ω равно числу букв

b, равному числу букв c;(г) ambnambn | m, n > 1.

Теория.Определение. Грамматика G называется контекстно-зависимой, есликаждое правило из P имеет вид α → β, где |α| 6 |β|.Решение.(a) В начале составим цепочку вида B aaa . . . aAa︸ ︷︷ ︸

n + 1

FE, где B, A, F

и E нетерминалы определенного назначения. Сделаем это спомощью правил:

S → BTaFET → aT | A

Теперь будем A продвигать влево до B и при переходе черезкаждый символ a будем создавать новый нетерминал C. На-ша цепочка примет вид BAaCaC . . . CaFE. Тем самым коли-чество C равно n−1 и означает, что нужно создать n−1 копиюисходной цепочки из символов a, полученной на предыдущемшаге, чтобы получить n2 самих символов a. (Замечание. n− 1по той причине, что одна копия строки из n символов a у насимеется с самого начала). Для описанных действий в грамма-тику добавится правило:

aA → AaCНазначение символа A себя исчерпало, так что дойдя доB он нам уже не нужен. В этот момент заведём специаль-ный символ Z, для которого опишем ε-правило и с его помо-щью избавимся от A. В результате наша цепочка примет видBaCaC . . . aCaFE, а в грамматику добавятся:

BA → BZZ → ε

Следующий шаг заключается в перемещении всех символов Cк символу E. Для этого нам нужно организовать беспрепят-ственный переход C через a и F . В итоге мы получим цепочкуB aaa . . . a︸ ︷︷ ︸

nF CC . . . C︸ ︷︷ ︸

n− 1

E. Правила, выполняющие это действие

описаны ниже.

Page 8: Решение избранных задач по ... - uCoz

8

Ca → aCCF → FC

Теперь из каждого нетерминала C, использую рядом стоящийспециальный символ E, создадим новый нетерминал D, кото-рый в последвии примет участие в непосредственном копиро-вании нашей исходной цепочки. Также заметим, что необходи-мо обеспечить свободный переход символов C, через появив-шиеся D, чтобы они могли переместиться к E и замениться насимвол D. После замены всех символов C получим цепочкуB aaa . . . a︸ ︷︷ ︸

nF DD . . . D︸ ︷︷ ︸

n− 1

E, а в грамматику запишем следующее:

CE → DECD → DC

Теперь будем непосредственно реализовывать копирование ис-ходной цепочки. Для этого каждый символ D будем перетаски-вать через всю цепочку к B и переходя через каждый символ aбудем создавать новый нетерминал Y , который в последствиии превратится в терминалы a нашей цепочки. Всего символовD, у нас n − 1, а это и есть то количество копий цепочки,которое необходимо создать. Поэтому переместив все D к Bмы создадим столько нетерминалов Y , сколько нам не хва-тало, чтобы количество символов a стало равным n2. Но нестоит забывать, что D может столкнуться с F и появивши-мися Y , и в этом случае необходимо реализовать свободныйпереход D через F и Y . В результате цепочка примет видB DDD . . .D︸ ︷︷ ︸

n− 1

aY . . . Y a︸ ︷︷ ︸n2

FE, а в грамматику допишем правила:

aD → DaYY D → DYFD → DF

Заметим, что символ D нам больше не понадобится, поэтомуот него можно избавиться. Наша цепочка упростится и приметвид B aY . . . Y a︸ ︷︷ ︸

n2

FE. И для реализации этого шага грамматике

потребуется одно новое правилоBD → BZ

Далее следует все нетерминалы Y заменить символами a. Дляэтого нам нужно реализовать свободный проход Y через x иF , а потом при переходе через E заменять его символом a.

Page 9: Решение избранных задач по ... - uCoz

9

Т.е. сначала цепочка станет B aa . . . a︸ ︷︷ ︸n

F Y Y . . . Y︸ ︷︷ ︸n(n− 1)

E, потом при-

мет вид B aa . . . a︸ ︷︷ ︸n

FE aa . . . a︸ ︷︷ ︸n(n− 1)

. Вышеописанные действия вы-

полнят следующие правила грамматики:Y a → aYY F → FYY E → Ea

Теперь осталось только избавиться от нетерминальных симво-лов B и E. Перенесем F к B посредством свободного переходаF через a. А потом уничтожим B и F , создав новый символG. Наша цепочка преобразуется в Gaa . . . aEaa . . . a. И в грам-матику добавятся правила:

aF → FaBF → GZ

Теперь осталось переместить G к E и и оба их удалить. Дляэтого нам понадобятся правила:

Ga → aGGE → ZZ

В итоге грамматика запишется таким образом:S → BTaFET → aT | AaA → AaCBA → BZZ → εCa → aCCF → FCCE → DECD → DCaD → DaYY D → DYFD → DFBD → BZY a → aYY F → FYY E → EaaF → FaBF → GZGa → aGGE → ZZ

Page 10: Решение избранных задач по ... - uCoz

10

(б) Изначально создадим либо цепочку aCAD, либо bCBD. За-тем используя нетерминал C придадим цепочке необходимуюдлинну, причем с появлением терминала будет появляться иего нетерминальный аналог, дабы в результате получить це-почку из двух одинаковых половинок – ωω. Для описанныхдействий в грамматику добавятся правила:

S → aCAD | bCBDC → aCA | bCB | ε

В результате получим цепочку вида ωΩRD, где ω ∈ a, b, Ω ∈A, B. Теперь нам нужно заменить A и B на соответсвующиеим терминалы a и b. Для этого воспользуемся маркером D. Бу-дем постепенно перемещать все нетерминалы к D, менять ихна соответсвующие терминалы, которые в свою очередь будутперемещаться к центру, чтобы в итоге мы получили цепочкуωω. Правила грамматики, осуществляющие соответсвующуюзамену и перемещение описаны ниже:

AD → aDBD → bDAa → aAAb → bABa → aBBb → bBD → ε

В итоге грамматика состоит из следующих правил:S → aCAD | bCBDC → aCA | bCB | εAD → aDBD → bDAa → aAAb → bABa → aBBb → bBD → ε

(в) На начальном этапе создадим нужное количество символов aв цепочке. И на концах цепочки поставим специальные нетер-минальные символы. В итоге, используя нижеперечисленныеправила, получим цепочку вида GaAaA . . . aAE.

S → GaAFEF → aAF | ε

Page 11: Решение избранных задач по ... - uCoz

11

Теперь переместим все A к E, используя свободный пе-реход через терминал a. В результате получим цепочкуG aa . . . a︸ ︷︷ ︸

nAA . . . A︸ ︷︷ ︸

nE. А затем E используем для превращения

каждого A в пару BC. Для этого в грамматику запишутсяправила:

Aa → aAAE → EBC

Наша цепочка теперь представляет собойG aa . . . a︸ ︷︷ ︸

nE BCBC . . . BC︸ ︷︷ ︸

2n

. Далее нужно избавиться от

символа E. Для этого переведем G к E и используя ε-правилоуничтожим их. Для это необходимы следующие правила:

Ga → aGGE → ZZZ → ε

Ну и наконец осталось только выстовить символы в нужнойпоследовательности и заменить нетерминалы на терминалы.При добавлении соответсвующих правил, грамматика приметокончательный вид:

S → GaAFEF → aAF | ε Aa → aAAE → EAGa → aGGE → ZZZ → εBC → CBCB → BCaB → BaBa → aBaC → CaCa → aCB → bC → C

(г) Решение сводится к решению задачи (б) с той лишь разницей,что в нашем случае цепочка ω имеет особый вид ambn. Дляреализации такого вида цепочки потребуются следубщие пра-вила:

S → aCADC → aCA | bEBE → bEB | ε

Page 12: Решение избранных задач по ... - uCoz

12

Остальная часть грамматики идентична грамматике из зада-ния (б):

S → aCADC → aCA | bEBE → bEB | εAD → aDBD → bDAa → aAAb → bABa → aBBb → bBD → ε

7. Решите систему уравнений с регулярными коэффициентами

A1 = (01∗ + 1)A1 + A2

A2 = 11 + 1A1 + 00A3

A3 = ε + A1 + A2

Теория.Определение. Уравнения, коэффициенты которых — регулярные выра-жения, будем называть уравнениями с регулярными коффициентами.Замечание. Решение уравнения с регулярными коэффициентамиX = aX + b имеет вид X = a∗b

Решение.Исходя из замечания найдём вид решения первого уравнение иподставим его соответсвенно во второе и третье. ПолучимA1 = (01∗ + 1)∗A2

A2 = 11 + 1(01∗ + 1)∗A2 + 00A3

A3 = (01∗ + 1)∗A2 + A2 + ε

Теперь найдём решение второго уравнения, которое будет яв-но зависеть от A3.A1 = (01∗ + 1)∗A2

A2 = (1(01∗ + 1)∗)∗(00A3 + 11)A3 = ((01∗ + 1)∗ + ε)A2 + ε

Расскроем скобки во втором уравнении и подсавим значениеA2 в третье уравнение.A1 = (01∗ + 1)∗A2

A2 = (1(01∗ + 1)∗)∗00A3 + (1(01∗ + 1)∗)∗11

Page 13: Решение избранных задач по ... - uCoz

13

A3 = ((01∗+1)∗+ε)(1(01∗+1)∗)∗00A3+(((01∗+1)∗+ε)(1(01∗+1)∗)∗+ε)

Третье уравнение содержит только одну независимую пере-менную A3, значение которой находится с использованием всётого же замечания.A3 = (((01∗+1)∗+ε)(1(01∗+1)∗)∗00)∗(((01∗+1)∗+ε)(1(01∗+1)∗)∗+ε)A2 = . . .A1 = . . .

8. Пусть L — регулярное множество. Докажите, что LR — регулярноемножество.

Решение.Для начала заметим, что по определнию любое регулярное мно-жество описывается соответсвующим регулярным выражением.Доказательство проведём по индукции.База индукции:

1) L1 = LR1 = ø — регулярное выражение, обозначающее регуляр-

ное (пустое) множество;2) L1 = LR

1 = ε — регулярное выражение, обозначающее регуляр-ное множество ε;

3) L1 = LR1 = a — регулярное выражение, обозначающее регуляр-

ное множество a;Предположение индукции:Если Li — регулярное выражение, то и LR

i также является регу-лярным выражением.Шаг индукции:Рассмотрим выражение Li+1. Из определения регулярного выра-жение следует, что это выражение может быть получено тремяспособами:

1) Li+1 = Li+L1, а значит выражение LRi+1 = (Li+L1)

R = LRi +LR

1

также является регулярным по определению;2) Li+1 = LiL1, тогда выражение LR

i+1 = (LiL1)R = LR

1 LRi также

является регулярным;3) Li+1 = L∗

i , а следовательно выражение LRi+1 = (L∗

i )R = (LR

i )∗ –регулярное, исходя из определения.

Таким образом получаем, что через n шагов индукции мы получимвыражения L = Ln и LR = LR

n , которые оба будут регулярнымии будут описывать два исходных регулярных множества L и LR

соответсвенно.

Page 14: Решение избранных задач по ... - uCoz

14

9. Докажите нерегулярность следующих множеств:(a) 0n1n | n > 1. Этот язык, который состоит из всех цепочек,

состоящих из нулей, за которыми следует такое же количествоединиц.

(б) 0n10n | n > 1(в) 0n1m2n | n и m — произвольные целые числа;(г) 0n1m | n 6 m;(д) 0n12n | n > 1.

Теория.Лемма (о разрастании для регулярных множеств). Пусть L – ре-гулярное множество. Существует такая константа p, что если ω ∈ L и|ω| > p, то цепочку ω можно представить в виде xyz, где 0 < |y| < p иxyiz ∈ L для всех i > 0.Для доказательсва воспользуемся отрицанием изложенной леммы и на-глядно покажем её не выполнение.Решение.(a) 1) если y = 0+, т.е. 0 0 . . . 0︸ ︷︷ ︸

y01 . . . 1, то xy0z /∈ L

2) если y = 1+, т.е. 0 . . . 01 1 . . . 1︸ ︷︷ ︸y

1, то xy0z /∈ L

3) если y = 0+1+, т.е. 0 0 . . . 01 . . . 1︸ ︷︷ ︸y

1, то xyyz /∈ L

(б) 1) если y = 0∗10∗, т.е. 0 0 . . . 010 . . . 0︸ ︷︷ ︸y

0, то xyyz /∈ L

2) если y = 0+, т.е. 0 0 . . . 0︸ ︷︷ ︸y

010 . . . 0, то xy0z /∈ L

(в) При m = 0 нерегулятность множества аналогична нерегуляр-ности множества 0n1n | n > 1

(г) 1) если y = 0+1+, т.е. 0 0 . . . 01 . . . 1︸ ︷︷ ︸y

1, то xyyz /∈ L

2) если y = 0+, то xyiz /∈ L, где i > m−n+|y||y|

3) при m = n и y = 1+, т.е. 0 . . . 01 1 . . . 1︸ ︷︷ ︸y

1, то xy0z /∈ L

(д) 1) если y = 0+ | 1+, то xy0z /∈ L2) если y = 0+1+, то xyyz /∈ L

Page 15: Решение избранных задач по ... - uCoz

15

10. Постройте детерминированные конечные автоматы с минималь-ным числом состояний для следующих регулярных выражений.(a) (1 | 0)∗0(1 | 0)(б) (1 | 0)∗0(1 | 0)(1 | 0)(в) (1)∗(01)∗1001(1∗0)∗

Теория.Определение. Пусть M = (Q,Σ, δ, q0, F ) — недетерминированный конеч-ный автомат. Назовем автомат M детерминированным, если множествоδ(q, a) содержит не более одного состояния для любых q ∈ Q и a ∈ Σ.Решение.(a) Построим сначала недетерминированный конечный автомат.

Опишем состояния детерминированного автомата и построимего.

0 1(1) = A (2) (1)(2) = A, B (3) (4)(3) = A, B, C (3) (4)(4) = A, C (2) (1)

Теперь проверим данный автомат на минимальность состоя-ний:

≡0 1, 23, 4≡1 1234

Следовательно данный автомат содержит минимальноеколичество состояний, необходимых для описания исходноговыражения.

Page 16: Решение избранных задач по ... - uCoz

16

(б) Недетерминированный автомат выглядет следующим образом

Вычислим таблицу состояний и переходов для детерминиро-ванного автомата.

0 1(1) = A (2) (1)(2) = A, B (4) (3)(3) = A, C (5) (6)(4) = A, B, C (7) (8)(5) = A, D (2) (1)(6) = A, B, D (4) (3)(7) = A, B, C,D (7) (8)(8) = A, C,D (6) (5)

В результате получили

Проверим автомат на минимальность:≡0 1, 2, 3, 45, 6, 7, 8≡1 1, 23, 45, 67, 8≡2 12345678

Делаем вывод, что данный автомат содержит минимальноеколичество состояний, необходимых для описания исходноговыражения.

Page 17: Решение избранных задач по ... - uCoz

17

(в) Недетерминированный автомат будем строить по частям.Для начала построим автомат для выражений (1)∗ и (01)∗.

Теперь постороим автомат для выражений 1001 и 1∗0.

Соединяем части в выражение (1)∗(01)∗1001 по следующемузамечанию.Замечание.Из каждого конечного состояния проводим стрелки,которые идут из каждого начального.

Теперь создадим последнюю часть данного выражения –(1∗0)∗.

Page 18: Решение избранных задач по ... - uCoz

18

Исспользуя вышеупомянутое замечание постоим недетерми-нированный автомат для всего выражения.

Вычислим таблицу состояний и переходов для детерминиро-ванного автомата.

0 1(1) = A (2) (3)(2) = C − (6)(3) = A, E (4) (3)(4) = C, F (5) (6)(5) = G − (7)(6) = B (2) (8)(7) = H (9) (10)(8) = E (11) −(9) = J (9) (10)(10) = I (9) (10)(11) = F (5) −

Page 19: Решение избранных задач по ... - uCoz

19

По таблице строим детерминированный автомат.

Проведём оценку автомата на свойство минимальностисостояний:

≡0 1, 2, 3, 4, 5, 6, 8, 10, 11, 127, 9≡1 1, 2, 3, 4, 6, 8, 11, 1257910≡2 4, 111, 2, 3, 6, 8, 1257910≡3 4, 113, 81, 2, 6, 1257910≡4 4, 11381, 62, 1257910≡4 411381621257910

Получили, что данный автомат удовлетворяет свойствуминимальности.

Page 20: Решение избранных задач по ... - uCoz

20

11. Постройте МП-автоматы, допускающие следующие языков:(a) anbnan | n > 1;(б) ωωR | ω ∈ a, b∗;(в) ambnambn | m, n > 1(г) ωω | ω ∈ a, b∗Теория.

Лемма (о разрастании для КС-языков). Пусть L — КС-язык. То-гда существует такая константа k, что если |z| > k и z ∈ L, то цепоч-ку z можно представить в виде z = uvwxy, где vx 6= ε, |vwx| 6 k иuviwxiy ∈ L для всех i > 0.Постоить МП-автоматы для данных языков, кроме (б), невозможно.Для доказательсва данного факта воспользуемся отрицанием изложен-ной леммы и наглядно покажем её не выполнение.Решение.(a) 1) если v = a+ и x = a+, т.е. a a . . . a︸ ︷︷ ︸

vab . . . ba a . . . a︸ ︷︷ ︸

xa, то

uv0wx0y /∈ L2) если v = b+ и x = b+, т.е. a . . . ab b . . . b︸ ︷︷ ︸

vb b . . . b︸ ︷︷ ︸

xba . . . a, то

uv0wx0y /∈ L3) если v = a+b+ или x = b+a+, т.е.

a . . . a a . . . ab . . . b︸ ︷︷ ︸v

b b . . . ba . . . a︸ ︷︷ ︸x

a, то uv2wx2y /∈ L

(б) Язык является КС, поэтому предъявим МП-автомат, допус-кающий все цепочки данного языка.P = (q0, q1, q2, a, b, Z, a, b, δ, q0, Z, q2), где

δ(q0, ε, Z) = (q2, ε)δ(q0, a, Z) = (q0, aZ)δ(q0, b, Z) = (q0, bZ)δ(q0, a, b) = (q0, ab)δ(q0, a, a) = (q0, aa), (q1, ε)δ(q0, b, b) = (q0, bb), (q1, ε)δ(q0, b, a) = (q0, ba)δ(q1, b, b) = (q1, ε)δ(q1, a, a) = (q1, ε)δ(q1, ε, Z) = (q2, ε)

(в)(г)12. Наидите грамматику порождающую L(P ), где

Page 21: Решение избранных задач по ... - uCoz

21

P = (q0, q1, q2, a, b, Z0, A, δ, q0, Z0, q2)и δ задается равенствами:

δ(q0, a, Z0) = (q1, AZ0)δ(q0, a, A) = (q1, AA)δ(q1, a, A) = (q1, AA)δ(q1, a, A) = (q1, A)δ(q2, a, A) = (q1, ε)

13. Рассмотрим два следующих языка:L1 = anb2ncm | n, m > 0L2 = anbmc2m | n, m > 0

(a) покажите, что каждый из них являеся контекстно-свободным,построив для них КС-грамматики;

(б) укажите, является ли L1 ∩ L2 КС-языком. Ответ обоснуйте.

Теория.Грамматика G называется контекстно-свободной, если каждое правилоиз P имеет вид A → α, где A ∈ N,α ∈ (N ∪ Σ)∗.Лемма (о разрастании для КС-языков). Пусть L — КС-язык. Тогдасуществует такая константа k, что если |z| > k и z ∈ L, то цепочку z

можно представить в виде z = uvwxy, где vx 6= ε, |vwx| 6 k и uviwxiy ∈L для всех i > 0.Решение.(a) Построим грамматику для языка L1.

S → XYX → aXbb | εY → cY | ε

Для L2 грамматика будет выглядеть следующим образом.S → XYX → aX | εY → bY cc | ε

(б) L1 ∩ L2 = anb2nc4n | n > 0Данный язык не является КС, для доказательства воспользу-емся леммой о разрастании.

1) если v = a+, v = b+ или v = c+, то для uv0wx0y наруша-ется соотношение степеней и uv0wx0y /∈ L

Page 22: Решение избранных задач по ... - uCoz

22

2) если v = a+b+, v = a+b2na+ или v = b+a+, то дляuv2wx2y нарушется порядок следования символов иuv2wx2y /∈ L

14. Найдте грамматику, не содержащую бесполезных символов иэквивалентную следующей грамматике:

S → AB | CAA → aB → BC | ABC → aB | b

Терия.Алгоритм “Устранение бесполезных символов”.

1. Применив к G алгоритм “Непуст ли язык?”, получить Ne. Поло-жить G1 = (N ∩Ne,Σ, P1, S), где P1 состоит из правил множестваP , содержащих только символы из Ne ∪ Σ.

2. Применив к G1 алгоритм ”Устранение недостижимых символов”,получить G′ = (N ′,Σ′, P ′, S′).

(1) Алгоритм “Непуст ли язык L(G)?”1. N0 = ø и i = 1.2. Ni = A | A → α ∈ P и α ∈ (Ni−1 ∪ Σ)∗ ∪Ni−1.3. Если Ni 6= Ni−1, то i = i + 1 и перейти к шагу 2, иначе

Ne = Ni.4. Если S ∈ Ne : “ДА” иначе “НЕТ” .

(2) Алгоритм “Устранение недостижимых символов”1. V0 = S и i = 1.2. Vi = X | в P есть A → αXβ и A ∈ Vi−1 ∪ Vi−1.3. Если Vi 6= Vi−1, то i = i + 1 и перейти к шагу 2, в про-

тивном случае пусть N ′ = Vi ∩ N,Σ = Vi ∩ Σ, P ′ состоитиз множества правил P , содержащих только символы изVi, G

′ = (N ′,Σ′, P ′, S).

Решение.Выполняя алгоритм “Непуст ли язык?” получаем:

Page 23: Решение избранных задач по ... - uCoz

23

N0 = øN1 = A, CN2 = S, A,CN3 = N2 = S, A,C = Ne

S → CAA → aB → b

Теперь выполним алгорит “Устранение недостижимых символов”:

V0 = SV1 = C, A, SV2 = b, a, C,A, SV3 = V2

В итоге грамматика примет вид:S → CAA → aB → b

15. Рассмотрите следующую грамматику:

S → ASB | εA → aAS | aB → SbS | A | bb

(a) есть ли в грамматике бесполезные символы? Если да, то уда-лите их;

(б) удалите ε-правила;(в) удалите цепные правила;

(г) приведите грамматику к нормальной форме Хомского.

Теория.Определение. Назовем КС-грамматику G = (N,Σ, P, S) грамматикойбез ε-правил, если либо

1) P не содержит ε-правил, либо2) есть точно одно ε-правило S → ε и S не встречается в правых

частях правил из P .

Алгоритм “Преобразование в грамматику без ε-правил”

Page 24: Решение избранных задач по ... - uCoz

24

1) Необходимо построить Nε = A | A ∈ N и A ⇒+G ε.

(a) N0 = ø и i = 1.(b) Ni = A | A → ε или A → α, α ∈ N∗

i−1 ∪Ni−1.(c) Если Ni 6= Ni−1, то i = i + 1 и перейти к шагу (b), иначе

Nε = Ni

2) Построить P ′ так:(a) Если A → α0B1α1B2 . . . αk−1Bkαk пренадлежит P, k > 0 и

Bi ∈ Nε для 1 6 i 6 k, но ни один символ в цепочках αj(0 6j 6 k) не пренадлежит Nε, то включить в P ′ все правилавида

A → α0X1α1X2 . . . αk−1Xkαk,где Xi – либо Bi, либо ε, но не включать правило A → ε.

(б) Если S ∈ Nε, включить в P ′ правилаS′ → ε | S,

где S′ – новый символ, положить N ′ = N∪S′. В противномслучае положить N ′ = N и S′ = S.

3) Положить G′ = (N ′,Σ′, P ′, S′).

Определение. Цепные правила — правила вида A → B.Алгоритм “Устранение цепных правил”

1) Для каждого A ∈ N построить NA = B | A ⇒∗ B следующимобразом:

(a) N0 = A и i = 1.(b) Ni = C | B → C пренадлежит P и B ∈ Ni−1 ∪Ni−1.(c) Если Ni 6= Ni−1, то i = i + 1 и повторить к шагу (b). В

противном случе положить NA = Ni

2) Построить P ′ так: если B → α пренадлежит P и не является цеп-ным правилом, включить в P ′ правило A → α для всех таких A,что Bi ∈ NA.

3) Положить G′ = (N ′,Σ′, P ′, S).

Определение. КС-грамматика G = (N,Σ, P, S) называется граммати-кой в нормальной форме Хомского, если каждое правило из P имеетодин из следующих видов:

– A → BC, где A,B и C принадлежат N ,– A → a, где a ∈ Σ,– A → ε, если ε ∈ L(G), причем S не встречается в правых частях

правил.Алгоритм “Преобразование к нормльной форме Хомского.”

1) Включить в P ′ каждое правило из P вида A → a.2) Включить в P ′ каждое правило из P вида A → BC.3) Включить в P ′ правило S → ε, если оно было в P .

Page 25: Решение избранных задач по ... - uCoz

25

4) Для каждого правила из P вида A → X1 . . . Xk, где k > 2, включитьв P ′ правила

A → X ′1[X2 . . . Xk]

[X2 . . . Xk] → X ′2[X3 . . . Xk]

.

.

.[Xk−2Xk−1Xk] → X ′

k−2[Xk−1Xk][Xk−1Xk] → X ′

k−1X′k]

где X ′i = Xi, если Xi ∈ N ; X ′

i — новый нетерминал, если Xi ∈ Σ;[Xi . . . Xk] — новый нетерминал.

5) Для каждого правила из P вида A → X1X2, где хотябы один изсимволов X1 и X2 принадлежит Σ, включить в P ′ правило A →X ′

1X′2.

6) Для каждого нетерминала вида a′, введённого на шагах (4) и (5),включить в P ′ правило a′ → a. Наконец, путь N ′ — это N вместесо всеми новыми нетерминалами, введёнными при построении P ′.

Решение.(a) Аналогично предыдущему примеру выполним алгоритм

“Устранение бесполезных символов”.(1)

N0 = øN1 = S, A,BN2 = N1 = S, A,B = Ne

В результате грамматика примет вид:S → ASB | εA → aAS | aB → SbS | A | bb

(2)V0 = SV1 = S, A,BV2 = V1

В результате выполнения алгоритма грамматика приметвид:

S → ASB | εA → aAS | aB → SbS | A | bb

Page 26: Решение избранных задач по ... - uCoz

26

(б) Выполняя алгоритм “Преобразование в грамматику безε-правил” получаем:

N0 = øN1 = SN2 = N1 = S = Nε

грамматика примет вид:S ′ → S | εS → ASB | ABA → aAS | aA | aB → SbS | bS | Sb | b | A | bb

(в) Выполним алгорим “Устранение цепных правил”:

S ′:N0 = S ′N1 = S, S ′N2 = N1 = S, S ′ = NS′

S: N0 = SN1 = N0 = S = NS

A: N0 = AN1 = N2 = A = NA

B:N0 = BN1 = A, BN2 = N1 = A, B = NB

В итоге грамматика примет вид:S ′ → ASB | AB | εS → ASB | ABA → aAS | aA | aB → SbS | bS | Sb | b | aAS | aA | a | bb

(г) Используя алгоритм “Преобразование к нормльной формеХомского.” грамматика изменится так:

Page 27: Решение избранных задач по ... - uCoz

27

S ′ → A〈SB〉 | AB | εS → A〈SB〉 | ABA → a′〈AS〉 | a′A | aB → S〈bS〉 | b′S | Sb′ | b | a′〈AS〉 | a′A | a | b′b′〈SB〉 → SB〈AB〉 → AB〈AS〉 → AS〈bS〉 → b′S〈Sb〉 → Sb′

a′ → ab′ → b

16. Устраните левую рекурсию в следующей грамматике:

S → AA | 0A → SS | 1

Теория. Определение. Нетерминал A КС-грамматики G =(N,Σ, P, S) называется рекурсивным, если A ⇒+ αAβ для некоторыхα и β. Если α = ε, то A называется леворекурсивным. Аналогично, еслиβ = ε, то A называется праворекурсивным. Определение. Грамматика,имеющая хотя бы один леворекурсивный нетерминал, называется лево-рекурсивной. Аналогично, грамматика, имеющая хотя бы один право-рекурсивный нетерминал, называтеся праворекурсивной. Алгоритм.”Устранение левой рекурсии”.

1. Пусть N = A1, . . . , An. Преобразуем G таким образом, чтобы вправиле Ai → α цепочка α начиналась либо с терминала, с такогоAj , что j > i. С этой целью положим i = 1

2. Пусть множество Ai-правил — это Ai → Aiα1 | . . . | Aiαm | β1 |. . . | βp, где ни одна из цепочек βj не начинается с Ak, если k 6 i.Заменим Ai-правила правилами:

A → β1 | . . . | βp | β1A′i | . . . | βpA

′i

A′i → α1 | . . . | αm | α1A

′i | . . . | αmA′

i

где A′i — новый нетерминал. Правые части всех Ai-правил начина-

ются теперь с терминала или с Ak для некоторого k > j.3. Если i = n, полученую грамматику G′ считать результатом и оста-

новиться. В противном случае положить i = i + 1 и j = 1.4. Заменить каждое правило вида Ai → Ajα правилами Ai → β1α |

. . . | βmα, где Aj → β1 | βm — все Aj-правила. Так как праваячасть каждого Aj-правила начинается уже с терминала или с Ak

для k > j, то и правая часть каждого Ai-правила будет теперьобладать этим свойством.

5. Если j = i − 1, нужно перейти к шагу (2). В противном случаеположить j = j + 1 и перейти к шагу (4).

Page 28: Решение избранных задач по ... - uCoz

28

Решение. Составим множество N таким образом:N = S, A

Выполняя описанный алгоритм сначала получим:S → AA | 0A → AAS | 0S | 1

И итоге грамматика примет вид:S → AA | 0A → 0S | 1 | 0SA′ | 1A′

A′ → AS | ASA′

18. Постройте МП-автоматы, допускающие следующие языки. Можноиспользовать как допуск по заключительному состоянию, так и попустому магазину.(a) 0n1n | n > 1;(б) множество всех цепочек из 0 и 1, в префиксах которых коли-

чество символов 1 не больше количества символов 0;(в) множество всех цепочек из 0 и 1 с одинаковыми количествами

символов 0 и 1.Решение.(a) Построим МПА, определяющий язык 0n1n | n > 1. Пусть

P = (q0, q1, q2, 0, 1, Z, 0, δ, q0, Z, q0),δ(q0, 0, Z) = (q1, 0Z),δ(q1, 0, 0) = (q1, 00),δ(q1, 1, 0) = (q2, ε),δ(q2, 1, 0) = (q2, ε),δ(q2, ε, Z) = (q0, ε).

Для входной цепочки 0011 автомат P проделает такую после-довательность тактов:

(q0, 0011, Z) ` (q1, 011, 0Z),` (q1, 11, 00Z),` (q2, 1, 0Z),` (q2, ε, Z),` (q0, ε, ε).

Вообще можно показать, что(q0, 0, Z) ` (q1, ε, 0Z),

(q1, 0i, 0Z) `i (q1, ε, 0

i+1Z),(q1, 1, 0

i+1Z) ` (q2, ε, 0iZ),

(q2, 1i, 0iZ) `i (q2, ε, Z)

(q2, ε, Z) ` (q0, ε, ε)

Page 29: Решение избранных задач по ... - uCoz

29

Объединяя всё это, получаем для n > 1(q0, 0

n1n, Z) `2n+1 (q0, ε, ε),(q0, ε, Z) `1 (q0, ε, ε),