Лекция 2-2022

Содержание

Слайд 2

§ 2.1. Мотивировка Первоначально понятие грамматики было формализовано лингвистами при изучении

§ 2.1. Мотивировка
Первоначально понятие грамматики было формализовано лингвистами при изучении

естественных языков. Они интересовались не только определением, что является или не является правильным предложением языка, но также искали способы описания структуры предложений.
Одной из целей была разработка формальной грамматики, способной описы-вать естественный язык.
Слайд 3

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

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

можно сделать его “понимаю-щим” этот язык, осуществлять с помощью компьютера перевод с одного языка на другой, по словесной формулировке проблем получать их решения, и т. д.
По-настоящему хорошего решения этих проблем мы пока не имеем. Но вполне удовлетворительные результаты достигнуты в описании и реализации языков программирования.
Слайд 4

Грамматический разбор Из школьного опыта известно, что собой представляет грамматический разбор

Грамматический разбор

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

При таком разборе определяется, какое слово является подлежащим, какое используется в роли сказуемого, какие слова играют роль определения, дополнения, обстоятельства и т. д.
Слайд 5

При разборе мы имеем дело с грамматическими категориями: ‘предложение’, ‘группа существительного’,

При разборе мы имеем дело с грамматическими категориями:
‘предложение’, ‘группа существительного’,

‘группа сказуемого’, ‘существительное’, ‘глагол’, ‘наречие’ и т. д. и пользуемся собственно словами, составляющими разби-раемое предложение.
Например, структуру английского предло-жения: “The little boy ran quickly” можно изобразить в виде диаграммы (рис. 2.1).
Слайд 6

Return 86

Return 86

Слайд 7

Правила грамматики Грамматический разбор предложений подразу-мевает использование правил некоторой грам-матики. Мы

Правила грамматики

Грамматический разбор предложений подразу-мевает использование правил некоторой грам-матики. Мы

их будем представлять в следующей форме (приведены не все правила грамматики):
< предложение > → < группа подлежащего >
< группа сказуемого >
< группа подлежащего > → < артикль >
< группа существительного >
< группа существительного > → < существительное >
< группа сказуемого > → < глагол > < наречие >
< артикль > → The
< прилагательное > → little
< существительное > → boy
< глагол > → ran
< наречие > → quickly
Слайд 8

Механизм порождения Здесь стрелочка → отделяет левую часть правила от правой,

Механизм порождения

Здесь стрелочка → отделяет левую часть правила от правой,

а грамматические термины заключены в металингвистические скобки < и > для того, чтобы отличать их от слов, составляющих разбираемое предложение.


По этим правилам можно не только проверять грамматическую правильность предложений, но также порождать грамматически правильные предложения.

Слайд 9

Механизм порождения Начиная с цепочки, включающей только грамматический термин, являющимся главным

Механизм порождения
Начиная с цепочки, включающей только грамматический термин,

являющимся главным (< предложение >), каждый грамма-тический термин, входящий в текущую цепочку, замещается правой частью того правила, которое содержит его в левой части. Когда в результате таких замен в текущей цепочке не останется ни одного термина грамматики, а только слова языка, мы получаем грамматически правильное предложение языка.

Механизм порождения

Слайд 10

§ 2.2. Грамматика. Язык, порождаемый грамматикой 1) нетерминалы — грамматические термины

§ 2.2. Грамматика. Язык, порождаемый грамматикой

1) нетерминалы — грамматические термины


<предложение>, <группа подлежащего >, …;
2) терминалы — слова, составляющие пред-ложения языка
The, little, boy, ran, quickly;

В предыдущем параграфе речь шла о конкретной грамматике. В ней имеются два словаря:

Слайд 11

3) правила, левые и правые части которых состоят из нетерминалов и

3) правила, левые и правые части которых состоят из нетерминалов и

терминалов;
<предложение> → < группа подлежащего >
< группа сказуемого >
< артикль > → The, ...
4) начальный нетерминал — главный грамматический термин; из него выводятся те цепочки терминалов, которые считаются предложениями языка
<предложение>
Слайд 12

Грамматики. Выводимость. Определение 2.1. Грамматикой назы-вается четверка G = (VN, VT,

Грамматики. Выводимость.

Определение 2.1. Грамматикой назы-вается четверка G = (VN, VT,

P, S), где VN, VT — алфавиты (словари) нетерминалов и терминалов соответственно, причём
VN ∩ VT = ∅, P — конечное множество правил, каждое из которых имеет вид
→ β,
где α∈V*VNV*, β∈V*, V = VN ∪ VT — объединённый алфавит (словарь) грамма-тики; S — начальный нетерминал.
Слайд 13

Грамматики. Выводимость.

Грамматики. Выводимость.

Слайд 14

Грамматики. Выводимость.

Грамматики. Выводимость.

Слайд 15

Выводимость

Выводимость

Слайд 16

Выводимость Если мы хотим подчеркнуть, что такой вывод использует по крайней

Выводимость

Если мы хотим подчеркнуть, что такой вывод использует по крайней мере

одно правило грамматики, то мы пишем:
Слайд 17

Напомним, что для любого отношения R имеют место следующие тождества: R0

Напомним, что для любого отношения R имеют место следующие тождества:


R0 = E = {(α, α)⏐∀ α∈V*},
Rn = RRn–1 = Rn–1R для n > 0;
в частности, R1 = R;
Они, разумеется, применимы и к отноше-нию непосредственной выводимости .
Слайд 18

Язык, порождаемый грамматикой

Язык, порождаемый грамматикой

Слайд 19

Слайд 20

Пример 2.1. Рассмотрим грамматику G = (VN, VT, P, S), где

Пример 2.1.

Рассмотрим грамматику G = (VN, VT, P, S),
где

VN = {S}, VT = {0, 1}, P = {S → 0S1 (1), S → 01 (2)}.
Здесь S — единственный нетерминал, он же — начальный;
0 и 1 — терминалы; правил два: S → 0S1 и S → 01.

Так как оба правила имеют в левой части по одному символу S, то единственно возможный порядок их применения — сколько-то раз использовать первое правило, а затем один раз использовать второе. Применив первое правило n – 1 раз, а затем второе правило, получим:

Здесь мы воспользовались обозначением wi = w ... w, причем w0 = ε.

Таким образом, эта грамматика порождает язык
L(G) = { 0n1n ⏐ n > 0}.

S

0S1

00S11

03S13

...

0n–1S1n–1

0n1n.

Return 36

Return 23

Слайд 21

Грамматику, определённую в предыдущем параграфе, вслед за Н. Хомским назовем грамматикой

Грамматику, определённую в предыдущем параграфе, вслед за Н. Хомским назовем

грамматикой типа 0.
Им введено ещё три типа грамматик, различающихся ограничениями, наклады-ваемыми на вид правил.

§ 2.3. Типы грамматик

Слайд 22

Определение 2.7. Грамматика G = (VN, VT, P, S) является грамматикой

Определение 2.7. Грамматика
G = (VN, VT, P, S)
является

грамматикой типа 1 или контекстно-зависимой грамматикой, если для каждого её правила α → β ∈ P выполняется условие | β | ≥ | α |.
Слайд 23

Часто вместо термина “контекстно-зависимая грамматика” используют аббре-виатуру csg (context-sensitive grammar). Очевидно,

Часто вместо термина “контекстно-зависимая грамматика” используют аббре-виатуру csg (context-sensitive grammar).


Очевидно, что грамматику типа 0, приведенную в примере 2.1, можно считать также и контекстно-зависимой грамматикой, поскольку правые части её правил не короче левых частей.

Слайд 24

7: Наконец, применим n – 1 раз правило (7). 6: Применим

7: Наконец, применим n – 1 раз правило (7).

6: Применим один

раз правило (6).

5: Затем, используем правило (5) n – 1 раз.

4: Далее мы используем один раз правило (4).

3: Применим правило (3) m = n(n–1)/2 раз. Тогда все B станут предшествовать всем C.

2: Затем мы используем правило (2).

Язык L(G) содержит цепочки вида anbncn для каждого n ≥ 1, так как
1: мы можем использовать правило (1) n – 1 раз.

Пример 2.2. Пусть G = (VN, VT, P, S), где VN = {S, B, C}, VT = {a, b, c}, P = {(1) S → aSBC, (2) S → aBC, (3) CB → BC, (4) aB → ab, (5) bB → bb, (6) bC → bc, (7) cC → cc}.

S

an–1S(BC)n–1

an(BC)n

anBnCn

anbBn–1Cn

anbnCn

anbnсCn–1

anbnсn .

Retun 667

RetunRetun 885

Retun 27

Слайд 25

Замечание 2.1. Некоторые авторы требуют, чтобы правила контекстно-зависимой грамматики имели вид:

Замечание 2.1. Некоторые авторы требуют, чтобы правила контекстно-зависимой грамматики имели

вид:
α1Aα2 → α1βα2,
где α1,α2,β∈V*, причем β ≠ ε, а A∈VN.
Это мотивирует название “контекстно-зависимая”, так как правило α1Aα2 → α1βα2 позволяет заменять A на β только, если A появляется в сентенциальной форме в контексте α1 и α2.
Слайд 26

В отечественной литературе для таких грамматик чаще используется термин НС-грамматики —

В отечественной литературе для таких грамматик чаще используется термин НС-грамматики

— грамматики непосред-ственных составляющих, а грамматики типа 1 называются неукорачивающими грамматиками.
Слайд 27

Грамматика, приведённая в примере 2.2, не является НС-грамматикой из-за того, что

Грамматика, приведённая в примере 2.2, не является НС-грамматикой из-за того,

что правило CB → BC не имеет вида:
α1Aα2 → α1βα2.
Действительно, если считать, что левая часть этого правила имеет вид: εCB, то правая часть может быть устроена лишь по образцу: ε…B. Никакая подстановка вместо многоточия не может дать BC. Если взять за образец левой части CBε, то правая часть должна иметь вид: C...ε, и опять никакая замена многоточия не даст BC.
Слайд 28

Слайд 29

каждое вхождение терминала a∈VT заменить на новый нетерминал Z, пополнить словарь

каждое вхождение терминала a∈VT заменить на новый нетерминал Z,

пополнить

словарь нетерминалов этим символом и

включить правило Z → a в множество правил грамматики.

Для этого достаточно

Правила вида Z → a допустимы для НС-грамматик.

Слайд 30

Правило же вида X1X2…Xm → Y1Y2…Ym+q неукорачивающей грамматики, где m >

Правило же вида
X1X2…Xm → Y1Y2…Ym+q
неукорачивающей грамматики, где
m

> 0, q ≥ 0, Xi , Yj∈VN, 1 ≤ i ≤ m, 1 ≤ j ≤ m + q,
эквивалентно группе правил:
X1X2X3…Xm→ A1X2X3…Xm,
A1X2X3…Xm→ A1A2X3…Xm,

A1A2A3…Xm→ A1A2A3…Am,
A1A2A3…Am→ Y1A2A3…Am,
Y1A2A3…Am→ Y1Y2A3… Am,

Y1Y2Y3…Am–1Am→ Y1Y2Y3…Ym–1Am,
Y1Y2…Ym–1Am→Y1Y2…Ym–1YmYm+1…Ym+q,
где A1, A2,…, Am — дополнительные нетерминалы.
Слайд 31

Замечание 2.2. Отметим, что новые правила с нетерминалами A могут применяться

Замечание 2.2. Отметим, что новые правила с нетерминалами A могут

применяться только в одной указанной последовательности и никакого другого эффекта, кроме того, какое производит заменяемое правило, воспроизвести не могут.
Соблазн “оптимизировать” построение НС-грамматики, не используя дополнительные нетерминалы A, а заменяя по-одному нетерминалы левой части X сразу на нетерминалы правой части Y, за исключением последнего правила, заменяющего последний X на все оставшиеся Y, мог бы привести к не эквивалентной грамматике.
Слайд 32

Пример 2.3. Покажем на примере, как построить НС-грамматику, эквиваленную неукорачивающей грамматике

Пример 2.3. Покажем на примере, как построить НС-грамматику, эквиваленную неукорачивающей грамматике

примера 2.2:
G = (VN, VT, P, S), где VN = {S, B, C}, VT = {a, b, c},
P = { (1) S → aSBC, (2) S → aBC, (3) CB → BC, (4) aB → ab, (5) bB → bb, (6) bC → bc, (7) cC → cc}.

Все правила, кроме (3), не нуждаются ни в каких преобразованиях, т. к. уже соответ-ствуют требованиям НС-грамматики.

Слайд 33

Правило (3) заменим группой правил: (3.1) CB → A1B, (3.2) A1B

Правило (3) заменим группой правил:
(3.1) CB → A1B, (3.2)

A1B → A1A2,
(3.3) A1A2 → BA2, (3.4) BA2 → BC,
которые все также соответствуют требованиям НС-грамматики. Эти правила не для чего, кроме как для вывода:
CB ⇒ A1B ⇒ A1A2 ⇒ BA2 ⇒ BC
служить не могут. В них A1 и A2 новые нетерминалы.
Слайд 34

Определение 2.8. Грамматика G = (VN, VT, P, S) является грамматикой

Определение 2.8. Грамматика
G = (VN, VT, P, S)
является

грамматикой типа 2 или контекстно-свободной грамматикой, если каждое её правило имеет вид
A → β ∈ P,
где A∈VN, β∈
Слайд 35

Замечание 2.3. Правило вида A → β позволяет заменить A на

Замечание 2.3. Правило вида A → β позволяет заменить A

на β независимо от контекста, в котором появляется A.

Вместо термина “контекстно-свободная грамматика” часто используют аббревиату-ру cfg (context-free grammar) или сокращение КС-грамматика.

Слайд 36

Грамматика, приведенная в примере 2.1, является не только грамматикой типа 0,

Грамматика, приведенная в примере 2.1, является не только грамматикой типа 0,

грамматикой типа 1, но и контекстно-свободной (по Хомскому типа 2).


Грамматики типа 2 — cfg

Слайд 37

Пример 2.3. Рассмотрим интересную контекстно-свободную грамматику G = (VN, VT, P,

Пример 2.3. Рассмотрим интересную контекстно-свободную грамматику
G = (VN, VT, P,

S), где
VN = {S, A, B}, VT={a, b},
P ={S → aB, S → bA,
A → a, A → aS, A → bAA,
B → b, B → bS, B → aBB}.
Слайд 38

Индукцией по длине цепочки покажем, что L(G) = {x∈{a, b}+ |

Индукцией по длине цепочки покажем, что
L(G) = {x∈{a, b}+

| #a x = #b x},
где #a x обозначает число букв а в цепочке x, а #b x — число букв b.

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

Слайд 39

Слайд 40

База. Очевидно, что все три утверждения выполняются для всех x: |

База. Очевидно, что все три утверждения выполняются для всех x:

| x | = 1, поскольку A ⇒ a, B ⇒ b и никакая терминальная цепочка длины 1 не выводима из S.
Кроме того, никакие цепочки единичной длины, отличающиеся от a и b, не выводимы из A и B соответственно.
Слайд 41

Индукционная гипотеза. Предположим, что утверждения 1–3 выполняются для всех x: |

Индукционная гипотеза. Предположим, что утверждения 1–3 выполняются для всех x:
|

x | ≤ k (k ≥ 1).
Слайд 42

Слайд 43


Слайд 44

В случае (2.2) имеем A bAA bx1A bx1x2 = x; A

В случае (2.2) имеем
A bAA bx1A bx1x2 = x;

A x1, A x2,
причём k1 + k2 = k, так что по индукционной гипотезе, поскольку
k1 < k и k2 < k,
выполняются соотношения
#ax1 − #bx1 = 1, #ax2− #bx2 =1
и, следовательно, #ax − #bx = 1.
Необходимость утверждения (3) доказыва-ется аналогично (2).
Слайд 45

Достаточность. Пусть | x | = k + 1. (1) Пусть

Достаточность. Пусть | x | = k + 1.
(1)

Пусть #a x = #b x.
Либо первый символ x есть a, либо он есть b.
Предположим, что x = ax1.
Теперь | x1| = k и цепочка #b x1 = #a x1 + 1.
По индукционной гипотезе B x1.
Но тогда S ⇒ aB ax1= x.
Аналогичное рассуждение достигает цели, если первый символ x есть b.
Слайд 46

Регулярные грамматики Определение 2.9. Грамматика G = (VN, VT, P, S)

Регулярные грамматики

Определение 2.9. Грамматика
G = (VN, VT, P, S)


является грамматикой типа 3 или регулярной грамматикой (rg (а-джи) — regular grammar), если каждое её правило имеет вид
A → aB или A → a,
где a∈VT; A, B∈VN.
Слайд 47

Замечание 2.4. В лекции 3 будет определено абстрактное устройство, называемое конечным

Замечание 2.4.
В лекции 3 будет определено абстрактное устройство, называемое

конечным автоматом, и показано, что языки, порождаемые грамматиками типа 3, являются в точности теми множествами, которые распознаются (допускаются) этими устройствами. Поэтому такой класс грам-матик и языков часто называют конечно-автоматными или просто автоматными.
Слайд 48

Пример rg Пример 2.4. Рассмотрим грамматику G = (VN, VT, P,

Пример rg

Пример 2.4. Рассмотрим грамматику
G = (VN, VT, P,

S), где VN ={S, A, B}, VT={0, 1},
P = {(1) S → 0A, (2) S → 1B, (3) S → 0,
(4) A → 0A, (5) A → 0S, (6) A → 1B,
(7) B → 1B, (8) B → 1, (9) B → 0}.

Ясно, что G — регулярная грамматика.
Вопрос: Определить, какой язык порождает данная грамматика?

Слайд 49

Ответ на вопрос Нетерминал B порождает символ 0 или 1, которому

Ответ на вопрос

Нетерминал B порождает символ 0 или 1, которому

может предшествовать любое число 1:
1*(0 ; 1)
Нетерминал A порождает:
(1) такие же цепочки, что и B, но начальная цепочка из единиц не пуста, и кроме того им может предшествовать любое число 0:
0*1+(0 ; 1)
(2) а также цепочки, какие порождает нетерминал S, но с символом 0 в начале:
0S
Слайд 50

Наконец, нетерминал S порождает: то же, что A, но с обязательным

Наконец, нетерминал S порождает:
то же, что A, но с обязательным

0 в начале:
0+1+(0 ; 1) ; 00S
(2) то же, что B, но с обязательной 1 в начале:
1+(0 ; 1)
(3) либо просто 0.
Итак, L(G) = (00)*(0 ; 0*1+(0 ;1)) =
={02n+1 ⏐n = 0, 1, 2, ...} ∪ 0*1+(0 ;1).

Ответ на вопрос

Слайд 51

Классы языков Очевидно, что каждая грамматика типа 3 является грамматикой типа

Классы языков

Очевидно, что
каждая грамматика типа 3 является грамматикой

типа 2;
каждая грамматика типа 2 является грамматикой типа 1;
каждая грамматика типа 1 является грамматикой типа 0.

Каждому классу грамматик соответствует класс языков. Языку приписывается тип грамматики, которой он порождается.


Слайд 52

В соответствии с текущей практикой язык типа 3 или регулярный язык

В соответствии с текущей практикой язык типа 3 или регулярный

язык часто называют регулярным множеством (rs — regular set).

Язык типа 0 называют рекурсивно перечислимым множеством (res — recur-sively enumerable set).

Например, контекстно-свободные грамма-тики (cfg) порождают контекстно-свободные языки (cfl), контекстно-зависимые грамматики (csg) порождают контекстно-зависимые языки (csl).

Классы языков

Слайд 53

Далее будет показано, что языки типа 0 соответствуют языкам, которые интуитивно

Далее будет показано, что языки типа 0 соответствуют языкам, которые

интуитивно могут быть перечислимы конечно описываемыми процедурами.

Очевидно, что L3 ⊆ L2 ⊆ L1 ⊆ L0. Впоследствии мы убедимся, что вложение этих классов языков строгое.

Классы языков

Слайд 54

§ 2.4. Пустое предложение Грамматики определены так, что пустое предложение (ε)

§ 2.4. Пустое предложение

Грамматики определены так, что пустое предложение (ε)

не находится ни в контекстно-свободном (cfl), ни в контекстно-зависимом (csl) языках, ни в регулярном множестве (rs). Теперь мы расширим данные ранее определения csg, cfg и rg, допустив порождение пустого предложения посредством правила вида S → ε, где S — начальный символ, при условии, что S не появляется в правой части никакого правила. В этом случае ясно, что правило S → ε может использоваться только в качестве первого и единственного шага вывода.
Слайд 55

Имеет место следующая лемма. Лемма 2.1. Если G = (VN, VT,

Имеет место следующая лемма.
Лемма 2.1. Если G = (VN,

VT, P, S) есть контекстно-зависимая, контекстно-свобод-ная или регулярная грамматика, то существует другая грамматика G1 такого же типа, которая порождает тот же самый язык и в которой ни одно правило не содержит начальный символ в своей правой части.

Return 6 62

Слайд 56

Доказательство. Пусть S1 — символ, не принадлежащий ни алфавиту нетерминалов, ни

Доказательство. Пусть S1 — символ, не принадлежащий ни алфавиту нетерминалов,

ни алфавиту терминалов.
Положим G1 = (VN ∪ {S1},VT, P1, S1), где P1= P ∪ {S1 → α⎪S → α∈P}. Поскольку символ S1∉VN, то он не появляется в правой части никакого правила из множества P1.
Докажем, что L(G) = L(G1).
Слайд 57

Слайд 58

Слайд 59

Слайд 60

Слайд 61

Очевидно, что грамматики G и G1 имеют один и тот же

Очевидно, что грамматики G и G1 имеют один и тот

же тип. Действительно, все правила грамматики G являются правилами грамматики G1. Те же новые правила, которые имеются в грамматике G1, но отсутствуют в грамматике G, отличаются от прототипа лишь нетерминалом слева, что не может изменить тип грамматики.
Что и требовалось доказать.
Слайд 62

Теорема 2.2. Если L — контекстно-зависимый, контекстно-свободный или регулярный язык, то

Теорема 2.2. Если L — контекстно-зависимый, контекстно-свободный или регулярный язык,

то языки L ∪ {ε}, L \ {ε} также являются соответственно контек-стно-зависимым, контекстно-свободным или регулярным языком.
Доказательство. Согласно лемме 2.1 существует грамматика G, порождающая язык L, начальный нетерминал которой не встречается в правых частях её правил.
Слайд 63

Если язык L = L(G) не содержит пустого предложения, то мы

Если язык L = L(G) не содержит пустого предложения, то

мы можем пополнить грамматику G ещё одним правилом вида S → ε.
Обозначим пополненную грамматику G1.
Слайд 64

Правило S → ε может использоваться только как первое и единственное

Правило S → ε может использоваться только как первое и

единственное правило вывода в G1, поскольку начальный нетерминал S не встречается в правых частях правил.
Любой вывод в грамматике G1, не использующий правило S → ε, есть также вывод в G, так что L(G1) = L(G) ∪ {ε}.
Слайд 65

Если же L = L(G) содержит пустое предложение, то среди правил

Если же L = L(G) содержит пустое предложение, то среди

правил грамматики G имеется правило вида S → ε, с помощью которого только пустое предложение и выводится. Ни в каком другом выводе это правило не используется, так что, если его отбросить, то получим грамматику G1, которая порождает все предложения языка L, кроме пустого. Следовательно,
L(G1) = L(G) \ {ε}.
Слайд 66

Согласно лемме 2.1 типы грамматик G и G1 одинаковы, поэтому одинаковы

Согласно лемме 2.1 типы грамматик G и G1 одинаковы, поэтому

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

Перестроим грамматику G из (сл.24) примера 2.2 согласно лемме 2.1 так,

Перестроим грамматику G из (сл.24) примера 2.2 согласно лемме 2.1

так, чтобы начальный нетерминал не встречался в правых частях правил.
Обозначим перестроенную грамматику G1:
G1 = (VN, VT, P1, S1), где VN={S1, S, B, C},
VT = {a, b, c}, P1= P ∪ {S1→ aSBC, S1→ aBC} =
{(1) S → aSBC, (2) S → aBC, (3) CB → BC,
(4) aB → ab, (5) bB → bb, (6) bC → bc,
(7) cC → cc, (8) S1→ aSBC, (9) S1→ aBC }
(1–7 — старые правила, 8 – 9 — дополнительные правила).


Пример 2.5.

Слайд 68

Построенная грамматика G1 отличается от исходной грамматики G только дополнительным нетерминалом

Построенная грамматика G1 отличается от исходной грамматики G только дополнительным

нетерминалом S1, исполь-зуемым в качестве нового начального символа, и двумя дополнительными правилами, его определяющими.
Согласно лемме 2.1
L(G1) = L(G) = {anbnсn⏐n ≥ 1}.
Слайд 69

Мы можем добавить пустое предложе-ние к L(G1), пополнив грамматику G1 ещё

Мы можем добавить пустое предложе-ние к L(G1), пополнив грамматику G1

ещё одним правилом: S1→ ε.
Обозначим пополненную грамматику G2.
Тогда G2 = (VN, VT, P2, S1), где
VN = {S1, S, B, C}, VT = {a, b, c},
P2 = P1 ∪ { S1 → ε}.
Очевидно, что
L(G2) = L(G1) ∪ {ε} = {anbnсn⏐n ≥ 0}.
Слайд 70

§ 2.5. Рекурсивность контекстно-зависимых грамматик Определение 2.10. Грамматика G = (VN,

§ 2.5. Рекурсивность контекстно-зависимых грамматик

Определение 2.10. Грамматика
G = (VN,

VT, P, S)
— рекурсивна, если существует алгоритм, который определяет (за конечное время), порождается ли любая данная цепочка x∈VT* данной грамматикой G.
Слайд 71

Пусть G = (VN, VT, P, S) — контекстно-зависимая грамматика. Проверить,

Пусть G = (VN, VT, P, S) — контекстно-зависимая грамматика.


Проверить, порождается пустое пред-ложение данной грамматикой или нет, просто. Достаточно посмотреть, имеется ли в ней правило S → ε, поскольку ε∈L(G) тогда и только тогда, когда S → ε∈P.
Слайд 72

Если ε∈L(G), то мы можем образовать новую грамматику: G1= (VN, VT,

Если ε∈L(G), то мы можем образовать новую грамматику:
G1= (VN,

VT, P1, S),
отличающуюся от исходной лишь тем, что в ней не будет правила S → ε, т. е.
P1 = P \ {S → ε}.
Согласно теореме 2.1 грамматика G1 тоже контекстно-зависима, и L(G1) = L(G) \ {ε}.
Следовательно, в любом выводе длина последовательных сентенциальных форм разве лишь возрастает (т. е. не убывает).
Слайд 73

Слайд 74

Предположим также, что j ≥ k×p Тогда среди этих сентенциальных форм,

Предположим также, что j ≥ k×p
Тогда среди этих сентенциальных

форм, по крайней мере, какие-то две одинаковы, так как число всевозможных различных непустых цепочек длиной p, составленных из символов алфавита V, в котором k символов, равно k×p . В рассматриваемой же последовательности мы имеем j + 1 цепочек, где j ≥ k×p .
Слайд 75

Интуитивно ясно, что если существует какой-нибудь вывод терминальной цепочки, то существует

Интуитивно ясно, что если существует какой-нибудь вывод терминальной цепочки, то

существует и “не слишком длинный” её вывод. В следующей теореме описывается алгоритм распознавания, в котором существенно используется это соображение.


Слайд 76

Теорема 2.3. Если грамматика G = (VN, VT, P, S) —

Теорема 2.3. Если грамматика
G = (VN, VT, P, S)


— контекстно-зависима, то она рекурсивна.

Доказательство. Ранее было показано, что существует простой способ узнать, действительно ли ε∈L(G), и если это так, то, исключив из грамматики правило S → ε, получим грамматику, которая порождает тот же самый язык, но без пустого предложения.

Слайд 77

Слайд 78

Слайд 79

Очевидно, что T0 = {S}, и при m > 0 Tm

Очевидно, что
T0 = {S}, и при m > 0
Tm

= Tm–1 ∪ {α | β ⇒ α, β∈Tm–1, | α | ≤ n},
т. е. Tm есть результат пополнения множества Tm–1 цепочками, выводимыми из его цепочек за один шаг, длина которых не превосходит n.
Слайд 80

Слайд 81

Слайд 82

Осталось доказать, что для некоторого m непременно будет Tm= Tm–1. Вспомним,

Осталось доказать, что для некоторого m непременно будет Tm= Tm–1.


Вспомним, что Ti ⊇ Ti–1 для каждого i ≥ 1. При Ti ≠ Ti–1 число элементов во множестве Ti, по крайней мере, на 1 больше, чем во множестве Ti–1.
Слайд 83

Слайд 84

Таким образом, при некотором m ≤ (k + 1)n непременно случится,

Таким образом, при некотором
m ≤ (k + 1)n
непременно

случится, что Tm = Tm–1.
Следовательно, процесс вычисления множеств Ti (i > 0) гарантированно закон-чится за конечное число шагов, и он тем самым является алгоритмом.

Замечание 2.5. Нет нужды доказывать, что алгоритм, описанный в теореме 2.3, применим также к контекстно-свободным и регулярным грамматикам.

Слайд 85

Пример 2.6. Рассмотрим грамматику G из примера 2.2. С помощью только

Пример 2.6. Рассмотрим грамматику G из примера 2.2.
С

помощью только что описанного алгоритма проверим: abac∈L(G)?
| abac | = 4.
T0= {S}.
T1= {S, aSBC, aBC}.
T2= {S, aSBC, aBC, abC}.
T3= {S, aSBC, aBC, abC, abc}.
T4= T3.
Поскольку abac∉T3, то abac∉L(G).
Слайд 86

Рассмотрим теперь наглядный метод описания любого вывода в контекстно-свободной грамматике. Фактически

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

Фактически мы его уже могли наблюдать в §2.1.

§ 2.6. Деревья вывода в контекстно-свободных грамматиках

Слайд 87

Определение 2.11. Пусть G = (VN, VT, P, S) — cfg.

Определение 2.11. Пусть
G = (VN, VT, P, S) —

cfg.
Дерево есть дерево вывода в грамматике G, если оно удовлетворяет следующим четырем условиям:
1) каждый узел имеет метку — символ из алфавита V;
2) метка корня — S;
3) если узел имеет по крайней мере одного потомка, то его метка должна быть нетерминалом;
Слайд 88

4) если узлы n1, n2, ... , nk — прямые потомки

4) если узлы n1, n2, ... , nk — прямые потомки

узла n, перечисленные слева направо, с метками A1, A2, ... , Ak соответственно, а метка узла n есть A, то A → A1A2 ... Ak∈P.
Слайд 89

Пример 2.7. Рассмотрим КС-грамматику G = ({S, A}, {a, b}, P,

Пример 2.7. Рассмотрим КС-грамматику
G = ({S, A}, {a, b},

P, S),
где
P = {(1) S → aAS, (2) S → a,
(3) A → SbA, (4) A → ba, (5) A → SS}.
Слайд 90

S → a (2) A → ba (4) S → aAS (1) A → SbA (3)

S → a (2)

A → ba (4)

S → aAS

(1)

A → SbA (3)

Слайд 91

Результат aabbaa этого дерева вывода получается, если выписать метки листьев слева

Результат aabbaa этого дерева вывода получается, если выписать метки листьев

слева направо.
Заметим, что в сентенциальных формах этого вывода на каждом шагу заменятся крайне левое вхождение нетерминала. Такие выводы в КС-грамматиках называются левосторонними.
Слайд 92

Слайд 93

Если это вспомогательное утверждение будет доказано для любой грамматики GA, то

Если это вспомогательное утверждение будет доказано для любой грамматики GA,

то справедливость утверждения теоремы будет следовать просто как частный случай при A = S.
Слайд 94

Retrun to slade 49

Retrun to slade 49

Слайд 95

Return 99 Return 97 Return 102

Return 99

Return 97

Return 102

Слайд 96

Индукционная гипотеза. Предположим, что утверждение выполняется для всех k ≤ n

Индукционная гипотеза. Предположим, что утверждение выполняется для всех k ≤ n

(n ≥ 1).
Индукционный переход. Пусть α есть результат дерева вывода с корнем, помеченным нетерминалом A, в котором k внутренних узлов, причем k = n + 1.
Слайд 97

Рассмотрим прямых потомков корня данного дерева вывода (см. рис.2.3) . Они

Рассмотрим прямых потомков корня данного дерева вывода (см. рис.2.3) .

Они не могут быть все листьями, так как в противном случае дерево имело бы только одну внутреннюю вершину — корень, а их должно быть не меньше двух.

Перенумеруем эти узлы слева на право: 1, 2, ..., m. Если узел i — не лист, то он — корень некоторого поддерева, в котором внутренних узлов не больше n.

Слайд 98

Слайд 99

Легко видеть, что если i Мы можем теперь, используя правило A

Легко видеть, что если i < j, то узел i

и все его потомки должны быть левее узла j и всех его потомков, и потому α = α1α2 ... αm.
Мы можем теперь, используя правило
A → A1 A2 … Am и все частичные выводы, следующие из индукционного предположе-ния, выстроить вывод:
Слайд 100

Слайд 101

Слайд 102

Если li = 0, то αi = Ai. Если li >

Если li = 0, то αi = Ai.
Если

li > 0, то по индукционному предположению существует дерево вывода Ti с корнем, имеющем метку Ai и результатом αi. Но первый шаг вывода предполагает существование правила
A → A1A2 ... Am∈P.
Следовательно, можно построить дерево вывода, верхняя часть которого будет иметь вид, как на рис. 2. Следовательно, можно построить дерево вывода, верхняя часть которого будет иметь вид, как на рис. 2.3.