Александр Охотин 1 октября 2020 г. -...

12

Transcript of Александр Охотин 1 октября 2020 г. -...

Page 1: Александр Охотин 1 октября 2020 г. - spbu.ruokhotin/teaching/tcs_fl...Теоретическая информатика, осень 2020 г. Лекция 5.

Теоретическая информатика, осень 2020 г.Лекция 5. Определения грамматик. Примеры построения

грамматик. Действия над языками, выразимые вграмматиках. Ограничения выразительной мощности

грамматик: лемма о накачке∗

Александр Охотин

1 октября 2020 г.

Содержание

1 Определения грамматик 1

2 Примеры построения грамматик 6

3 Действия над языками, выразимые в грамматиках 9

4 Ограничения выразительной мощности грамматик 11

1 Определения грамматик

Определение 1. (Формальная) грамматика — это четвёрка G = (Σ, N,R, S), состоящаяиз следующих компонентов.

• Конечное множество символов Σ — алфавит определяемого языка.

• Конечное множество N — это множество определяемых в грамматике свойствстрок, которым всякая строка над алфавитом Σ обладает или не обладает. Обозна-чаются обычно буквами A,B,C, . . .

В информатике элементы N традиционно называют «нетерминальными символа-ми» («нетерминалами») — отсюда буква N — поскольку пути в дереве разбора наних не заканчиваются. В лингвистике они называются синтаксическими категори-ями.

• Конечное множество R правил грамматики, каждое из которых описывает возмож-ную структуру строк со свойством A ∈ N в виде конкатенации u0B1u1 . . . B`u`, где

∗Краткое содержание лекций, прочитанных студентам 2-го курса факульте-та МКН СПбГУ в осеннем семестре 2020–2021 учебного года. Страница курса:http://users.math-cs.spbu.ru/~okhotin/teaching/tcs_fl_2020/.

1

Page 2: Александр Охотин 1 октября 2020 г. - spbu.ruokhotin/teaching/tcs_fl...Теоретическая информатика, осень 2020 г. Лекция 5.

B1, . . . , B` (` > 0) — все нетерминальные символы, на которые ссылается правило,а любые символы, написанные между ними, образуют строки u0, u1, . . . , u`.

A→ u0B1u1 . . . B`u` (A ∈ N, ` > 0, B1, . . . , B` ∈ N, u0, u1, . . . , u` ∈ Σ∗)

• Начальный символ S ∈ N , от «sentence», обозначает множество всех синтаксиче-ски правильных строк, определяемых в грамматике.

Общий вид правил часто записывается как A → X1 . . . X`, где X1, . . . , X` ∈ Σ ∪ N (` > 0)— все символы и нетерминальные символы, конкатенация которых записана в правиле.Дальнейшее обозначение: A→ α, где α = X1 . . . X` — строка над алфавитом Σ ∪N .

Несколько правил A→ α1, . . . , A→ αm для одного и того же нетерминального символаA ∈ N записывают возможную структуру строк с этим свойством. Это такой же операторвыбора, как и в регулярных выражениях, и потому такие правила обычно записываются водну строчку.

A→ α1 | . . . | αm

Пример 1. Грамматика для языка Дика записывается как G = (Σ, N,R, S), где Σ = {a, b},N = {S} и R = {S → aSb, S → SS, S → ε}. Такую грамматику записывают следующимобразом.

S → aSb | SS | ε

Дерево разбора строки w = abaabb в соответствии с этой грамматикой приведено нарис. ??.

1.1 Определение через дерево разбора

Дерево разбора — это уже само по себе формальное определение.Дерево разбора строки w ∈ Σ∗. Потомки каждой внутренней вершины упорядочены,

откуда вытекает порядок на листьях. Листья слева направо помечены символами строкиw. Каждая внутренняя вершина помечена некоторым нетерминальным символом A ∈ N , иесли X1, . . . , X` — её потомки, то в грамматике должно быть правило A→ X1 . . . X`. Дляправила A → ε вершина помечена символом A, не имеет потомков, но всё равно рассмат-ривается в качестве внутренней.

Язык, задаваемый грамматикой, L(G) ⊆ Σ∗, состоит из всех строк, для которых естьдерево разбора.

1.2 Определение через логический вывод

Логическая система, в которой выводятся все верные высказывания вида «строка w имеетсвойство A», обозначаемые через A(w).

Пример 1(D). В грамматике из примера 1 определён один нетерминальный символ S,задающий все правильно вложенные строки. Поэтому высказывание вида S(w) можнопрочитать как «w — правильно вложенная строка».

2

Page 3: Александр Охотин 1 октября 2020 г. - spbu.ruokhotin/teaching/tcs_fl...Теоретическая информатика, осень 2020 г. Лекция 5.

Утверждение о правильной вложенности строки w = abaabb выводится так.

S(ε)(S → ε)

S(ε)

S(ab)(S → aSb)

S(ab)

S(aabb)(S → aSb)

S(ab), S(aabb)

S(abaabb)(S → SS)

Этот вывод можно записать в виде дерева доказательства, разделив S(ab) для двухразных подстрок ab.

S(ε)

S(ab)

S(aabb)

S(ε)

S(ab)

S(abaabb)

Это тот же объект, что и дерево разбора.

Определение 1(D). Для грамматики G = (Σ, N,R, S), высказывания имеют вид «строкаw имеет свойство A», где w ∈ Σ∗ и A ∈ N , и обозначаются через A(w).

Пусть A → u0B1u1 . . . B`u` — правило, в котором B1, . . . , B` ∈ N , где ` > 0 — этовсе нетерминальные символы, на которые оно ссылается, а u0, u1, . . . , u` ∈ Σ∗ — символымежду ними. Это правило позволяет сделать следующий логический вывод, для любыхстрок v1, . . . , v`, где над чертой — посылки, а под чертой — следствие.

B1(v1), . . . , B`(v`)

A(u0v1u1 . . . v`u`)(A→ u0B1u1 . . . B`u`) (for all v1, . . . , v` ∈ Σ∗)

Вывод высказывания A(u) — это последовательность таких шагов вывода, где в качествепосылок на каждом шаге используются ранее выведенные высказывания: Ij ⊆ {Ai(ui) | i ∈{1, . . . , j − 1} }, для всех j.

I1A1(u1)

,I2

A2(u2), . . .

Iz−1Az−1(uz−1)

,IzA(u)

Если такой вывод существует, это обозначается через ` A(u).Тогда, для всех A ∈ N , определяется LG(A) = {w |` A(w) }. Язык, задаваемый грам-

матикой — L(G) = LG(S) = {w |` S(w) }.

1.3 Определение через перезапись строк

Перезапись сентенциальных форм — строк над алфавитом Σ ∪ N . Каждая такая строка— это схема предложения, в которой каждое вхождение каждого нетерминального символаA ∈ N означает некоторую неуказанную строку со свойством A.

Перезапись начинается с S, что означает любое правильное предложение. На каждомшаге перезаписи некоторый нетерминальный символ A заменяется на правую часть пра-вила для A, так что получается более определённая сентенциальная форма. Перезаписьпродолжается, пока не останутся только символы из Σ — то есть, предложение языка.

Пример 1(R). Для грамматики из примера 1, строка abaabb получается перезаписьютак.

S =⇒ SS =⇒ aSbS =⇒ abS =⇒ abaSb =⇒ abaaSbb =⇒ abaabb

3

Page 4: Александр Охотин 1 октября 2020 г. - spbu.ruokhotin/teaching/tcs_fl...Теоретическая информатика, осень 2020 г. Лекция 5.

Определение 1(R) (Хомский). Пусть G = (Σ, N,R, S) — грамматика. Если ηAθ — стро-ка над совмещённым алфавитом символов и нетерминальных символов Σ ∪N (где A ∈ Nи η, θ ∈ (Σ ∪ N)∗), и если A → α — некоторое правило для A, тогда строка ηAθ можетбыть перезаписана в ηαθ за один шаг, что обозначается следующим образом.

ηAθ =⇒ ηαθ (для всех A→ α ∈ R and η, θ ∈ (Σ ∪N)∗)

Последовательность строк α0, α1, . . . , αn над алфавитом Σ∪N , где n > 0, называетсяцепочкой перезаписи, если всякая строка αi может быть перезаписана за один шаг встроку αi+1. Это обозначается так.

α0 =⇒ α1 =⇒ . . . =⇒ αn

Тогда говорится, что α0 перезаписывается в αn за n шагов (обозначение: α0 =⇒n αn).Также вводятся обозначения для перезаписи за ноль и более шагов (α =⇒∗ β), за один иболее шагов (α =⇒+ β), и за не более чем n шагов (α =⇒6n β).

Язык, задаваемый грамматикой.

LG(A) = {w | w ∈ Σ∗, A =⇒+ w } (A ∈ N)

L(G) = LG(S)

1.4 Определение через языковые уравнения

Гинзбург и Райс [1962]: грамматика представляется в виде системы уравнений, где языки— неизвестные. Всякий нетерминальный символ в грамматике G = (Σ, N,R, S) становитсяпеременной, принимающей значение языка над Σ. Значение переменной A ∈ N в решениисистемы — это и есть множество строк, имеющих свойство A.

Рис. 1: Сеймур Гинзбург (1928–2004).

Эта система языковых уравнений содержит одно уравнение вида A = ϕA для каждойпеременной A, где ϕA — выражение с аргументами-языками, содержащее в себе все правиладля нетерминального символа A. При преобразовании всякий оператор выбора переходитв операцию объединения множеств, конкатенация в правилах становится конкатенациейязыков в уравнении, и всякий символ a ∈ Σ, использованный в правиле, становится одно-элементным языком {a}.

4

Page 5: Александр Охотин 1 октября 2020 г. - spbu.ruokhotin/teaching/tcs_fl...Теоретическая информатика, осень 2020 г. Лекция 5.

Пример 1(E). Грамматика в примере 1 представляется следующим языковым уравнени-ем, где объединение трёх конкатенаций в правой части соответствует трём правиламдля S.

S = ({a} · S · {b})︸ ︷︷ ︸S→aSb

∪ (S · S)︸ ︷︷ ︸S→SS

∪ {ε}︸︷︷︸S→ε︸ ︷︷ ︸

ϕS

Одно из решений этого уравнения — язык Дика.Уравнение можно прочитать так: «w — правильно вложенная строка тогда и только

тогда, когда она или имеет вид w = aub, где u — правильно вложенная, или представля-ется в виде конкатенации w = uv двух правильно вложенных строк u, v, или это пустаястрока w = ε».

Это не единственное решение; есть, например, S = Σ∗. Язык, задаваемый грамматикой,определяется с помощью наименьшего решения относительно частичного порядка поэле-ментного включения. Для данного уравнения, язык Дика — наименьшее решение.

Теорема 1 (Гинзбург и Райс [1962]). Пусть X1, . . . , Xn — переменные, и для каждой пе-ременной Xi, пусть ϕi(X1, . . . , Xn) — выражение, содержащее переменные, любые посто-янные языки, а также операции объединения и конкатенации. Тогда система n уравненийXi = ϕi(X1, . . . , Xn), где i ∈ {1, . . . , n}, имеет решения, и среди них есть наименьшеерешение (L1, . . . , Ln) — то есть такое, что всякое решение (L′1, . . . , L

′n) должно удовле-

творять Li ⊆ L′i для всех i.

Определение 1(E) (Гинзбург и Райс [1962]). Пусть G = (Σ, N,R, S) — грамматика.Соответствующая система языковых уравнений такова:

A =⋃

A→u0B1u1...B`u`∈R{u0} ·B1 · {u1} · . . . ·B` · {u`}︸ ︷︷ ︸

ϕA

(for all A ∈ N)

Пусть наименьшее решение имеет вид A = LA, для всех A ∈ N . Тогда L(G) определяетсякак LS.

1.5 Равносильность четырёх определений

Они равносильны, т.е., определяют те же значения LG(A) и L(G).

Теорема 2. Пусть G = (Σ, N,R, S) — грамматика, как в определении 1. Для всякогонетерминального символа A ∈ N и для всякой строки w ∈ Σ∗, следующие утвержденияравносильны:

(T). существует дерево разбора w из A;

(D). высказывание A(w) выводимо (` A(w));

5

Page 6: Александр Охотин 1 октября 2020 г. - spbu.ruokhotin/teaching/tcs_fl...Теоретическая информатика, осень 2020 г. Лекция 5.

(R). A можно перезаписать в w за один и более шагов (A =⇒+ w);

(E). w принадлежит A-компоненту наименьшего решения системы языковых уравнений(w ∈ LA).

На лекции доказывалась равносильность определений через логический вывод и черезперезапись строк: в одну сторону — индукцией по длине вывода, в другую — индукцией подлине последовательности перезаписи.

2 Примеры построения грамматик

2.1 Задание регулярных конструкций

Теорема 3. Для всякого регулярного языка есть грамматика.

Доказательство. Пусть A = (Σ, Q,Q0, δ, F ) — произвольный NFA.Строится грамматика G = (Σ, N,R, S), где N = {Aq | q ∈ Q } и S = Aq0 . Цель: чтобы

всякий нетерминальный символ Aq задавал множество всех строк, принимаемых автоматомиз состояния q.

LG(Aq) = {w | δ(q, w) ∈ F }

Для всякого перехода в автомате вводится следующее правило.

Aq → aAr (a ∈ Σ, r ∈ δ(q, a))

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

Aq → ε (q ∈ F )

Тогда L(G) = L(A).

Можно доказать иначе, используя регулярное выражение вместо NFA.

Другое доказательство теоремы 3. Пусть α — произвольное регулярное выражение.Строится грамматика G = (Σ, N,R, S), где N = {Aϕ | ϕ — подвыражение α } и S = Aα.

Цель: чтобы всякий нетерминальный символ Aϕ задавал тот же язык, что и регулярноевыражение ϕ.

LG(Aϕ) = L(ϕ)

Построение — индукцией по структуре выражения. Для одиночного символа a ∈ Σсоответствующий нетерминальный символ его и задаёт.

Aa → a

Для нетерминального символа, соответствующего регулярному выражению ∅, можно во-обще не задавать правил; а можно, например, задать такое правило, которое всё равно неопределит ни одной строки.

A∅ → A∅

6

Page 7: Александр Охотин 1 октября 2020 г. - spbu.ruokhotin/teaching/tcs_fl...Теоретическая информатика, осень 2020 г. Лекция 5.

Если регулярное выражение — это конкатенация двух выражений, то правило задаёт кон-катенацию.

A(ϕψ) → AϕAψ

Если выражение — это выбор между двумя подвыражениями, то в грамматике два правила.

A(ϕ | ψ) → Aϕ | Aψ

Наконец, повторение (звёздочку) можно выразить следующими правилами.

Aϕ∗ → AϕAϕ∗ | ε

Доказательство правильности — опять же индукцией по структуре выражения.

2.2 Сравнение числа объектов

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

Пример 2. Язык { anbn | n > 0 } задаётся следующей грамматикой.

S → aSb | ε

Дерево разбора устанавливает связь между соответствующими a и b.Тем же способом можно связать между собой подстроки произвольного вида, описы-

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

Пример 3. Алфавит Σ = {0, 1, ,, ;}.

S → A,S,A | A;AA→ 0A | 1A | 0 | 1

В следующем примере граница между сравниваемыми кусками внешне не видна.

Пример 4. Язык { ambm+nan | m,n > 0 } описывается следующей грамматикой, в которойстрока ambm+nan представлена как конкатенация ambm и bnan.

S → AB

A→ aAb | εB → bBa | ε

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

7

Page 8: Александр Охотин 1 октября 2020 г. - spbu.ruokhotin/teaching/tcs_fl...Теоретическая информатика, осень 2020 г. Лекция 5.

S→AB

a b b ab a

B→bBa

B→bBaA→aAb

B→εA→ε

Рис. 2: Дерево разбора строки abbbaa по грамматике в примере 4.

Пример 5. Двухсторонний язык Дика L = {w | w ∈ {a, b}∗, |w|a = |w|b } задаётсяследующей грамматикой.

S → SS | aSb | bSa | ε

Доказательство. То, что приведённая грамматика действительно задаёт именно этот язык,надо ещё доказать.

С одной стороны, нужно доказать, что всякая строка, определяемая грамматикой, ле-жит в языке L. Это без затей доказывается индукцией по высоте дерева разбора. Базовыйслучай: пустая строка задаётся грамматикой и лежит в L. Переход, правило S → SS: еслистрока w задаётся грамматикой по этому правилу, то w = uv, причём u и v задаются дере-вьями меньшей высоты; тогда u, v ∈ L по предположению индукции и, стало быть |u|a = |u|bи |v|a = |v|b, откуда следует |uv|a = |uv|b. Аналогично для двух других правил.

В другую сторону, пусть |w|a = |w|b. Надо доказать, что w задаётся грамматикой. Ин-дукция по длине строки. Если w = ε, то задаётся. Если w = axb, то по предположениюиндукции x задаётся, и тогда w задаётся по правилу S → aSb. Случай w = bxa — анало-гично, используя правило S → bSa.

Пусть w начинается с a и заканчивается на a. Рассматривается функция f : {0, 1, . . . , |w|} →Z, где f(i) определяется как разность между количеством символов a и b среди первых iсимволов строки w. Тогда f(1) = 1, f(|w| − 1) = −1, и значения функции на двух после-довательных шагах отличаются на 1. Стало быть, существует i, для которого f(i) = 0, чтодаёт разложение w = uv, где |u| = i и |u|a = |u|b, откуда также следует, что |v|a = |v|b.По предположению индукции, строки u, v задаются грамматикой, и тогда w получается поправилу S → SS.

Случай w, начинающейся и заканчивающейся на b, рассматривается аналогично.

2.3 Более сложные конструкции

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

8

Page 9: Александр Охотин 1 октября 2020 г. - spbu.ruokhotin/teaching/tcs_fl...Теоретическая информатика, осень 2020 г. Лекция 5.

Пример 6. Язык {ww | w ∈ {a, b}∗ } описывается следующей грамматикой.

S → AB | BA | OA→ XAX | aB → XBX | bX → a | bO → XXO | X

(см. рис. 3)

S

B

ab b b b

BX X X X

B

A

a a b

AX X

a b

i j i j

i i j j

Рис. 3: (слева) Как грамматика в примере 6 определяет строки вида uv, где |u| = |v| и u 6= v;(справа) дерево разбора строки aabbabbb.

3 Действия над языками, выразимые в грамматиках

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

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

Теорема 4 (Бар-Хиллель, Перлес и Шамир [1961]). Для всякой грамматики G и для вся-кого регулярного языка K, язык L(G) ∩K описывается некоторой грамматикой.

Это, в частности, означает, что при написании грамматики можно задавать регулярныеограничения на форму подстрок одновременно с определением общей структуры предло-жения — и конструктивное доказательство служит примером введения таких ограниченийв существующую грамматику.

9

Page 10: Александр Охотин 1 октября 2020 г. - spbu.ruokhotin/teaching/tcs_fl...Теоретическая информатика, осень 2020 г. Лекция 5.

Например, еслиG описывает грамотные предложения на естественном языке, аK задаётвсе последовательности слогов, в которых выдержан стихотворный размер и есть рифма,то пересечение даст грамматику для стихов.

Рис. 4: Иегошуа Бар-Хиллель (1915–1975), Миха Перлес (род. 1936), Элияху Шамир (род.1934).

Доказательство. Пусть G = (Σ, N,R, S) — грамматика, пусть M = (Σ, Q, q0, δ, F ) — DFA.В новой грамматике G′ = (Σ, N ′, R′, S′) нетерминальные символы имеют вид Aq,q′ , гдеA ∈ N — одна из нетерминальных символов из G, а q и q′ — любые два состояния M . Цель:чтобы Aq,q′ обозначало множество всех строк со свойством A (определённом в исходнойграмматике) на которых DFA, начав вычисление в состоянии q, закончит читать в состоянииq′.

LG′(Aq,q′) = LG(A) ∩ {w | δ(q, w) = q′ }

N ′ = {S′} ∪ {Aq,q′ | A ∈ N, q, q′ ∈ Q }

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

Пусть Aq,q′ ∈ N ′ и пустьA→ u0B

(1)u1 . . . B(`)u` (1)

— правило для A в исходной грамматике. Правило определяет строки вида u0v1u1 . . . v`u`,где всякая подстрока vi имеет свойство B(i). В новой грамматике соответствующее правилодолжно также описывать вычисление DFA на той же строке u0v1u1 . . . v`u`, начинающеесяв состоянии q и заканчивающееся в состоянии q′. Пусть p0, p1, . . . , p` ∈ Q — последова-тельность промежуточных состояний, где каждое состояние pi достигается перед чтениемсоответствующей подстроки ui. Тогда p0 = q и δ(p`, u`) = q′. Для всякой такой строки авто-мат начинает чтение каждой подстроки vi в состоянии δ(pi−1, ui−1), и должен закончить еёчитать в состоянии pi. В новой грамматике это обеспечивается ссылкой на нетерминальныйсимвол B

(i)δ(pi−1,ui−1),pi

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

Aq,q′ → u0B(1)δ(p0,u0),p1

u1B(2)δ(p1,u1),p2

u2 . . . B(`)δ(p`−1,u`−1),p`

u` (2)

Правила для S′.

S′ → Sq0,q (q ∈ F )

10

Page 11: Александр Охотин 1 октября 2020 г. - spbu.ruokhotin/teaching/tcs_fl...Теоретическая информатика, осень 2020 г. Лекция 5.

Построение напоминает прямое произведение двух DFA. Возможно ли прямое произ-ведение двух произвольных грамматик, задающее пересечение языков? Нет — потому чтодве грамматики определяют для одной строки деревья разбора различной структуры, и та-кие два дерева не объединить в одно. Далее будет доказано, что класс языков, задаваемыхграмматиками, вообще не замкнут относительно пересечения.

Ещё один пример преобразования грамматики.

Теорема 5. Пусть G = (Σ, N,R, S) — грамматика. Тогда существует грамматика, за-дающая язык prefixes(L) = {u | ∃v : uv ∈ L(G) }.

Доказательство. G′ = (Σ, N ∪ N ′, R ∪ R′, S′), где N ′ = {A′ | A ∈ N }. Цель построения:LG′(A) = LG(A) и LG′(A

′) = prefixes(LG(A)). Для каждого A используются все старыеправила из R, а для A′ определяются следующие новые правила.

Если для A было правило A → X1 . . . X` ∈ R, задающее конкатенации u1 . . . u`, то A′

должен уметь задавать все префиксы этих конкатенации. Во-первых, будут префиксы видаu1 . . . uk, в которые первые k подстрок входят целиком, а остальные целиком не входят.

A′ → X1 . . . Xk−1Xk (A→ X1 . . . X` ∈ R, k ∈ {0, . . . , `})

Во-вторых, возможны префиксы вида u1 . . . uk−1x, состоящие из первых k − 1 подстрокцеликом, продолженных некоторым префиксом строки uk. Такие префиксы задаются сле-дующим правилом.

A′ → X1 . . . Xk−1X′k (A→ X1 . . . X` ∈ R, k ∈ {1, . . . , `})

Упражнение 1. Доказать, что для всякой грамматики G существует грамматика G′,задающая циклический сдвиг языка L(G), то есть, L(G′) = { vu | uv ∈ L(G) }.

Упражнение 2. Доказать, что для всякого регулярного языка L над двусимвольным ал-фавитом существует грамматика, задающая множество всех перестановок всех строкиз L.

{ ai1 . . . ai` | a1 . . . a` ∈ L, (i1, . . . , i`) — перестановка }

4 Ограничения выразительной мощности грамматик

4.1 Лемма о накачке

Лемма 1 (Лемма о накачке для грамматик: Бар-Хиллель, Перлес и Шамир [1961]). Длявсякого языка L ⊆ Σ∗, задаваемого грамматикой, существует такое число p > 1, что длявсякой строки w ∈ L длины не менее чем p (|w| > p) существует разбиение w = xuyvz,где |uv| > 0 и |uyv| 6 p, для которого выполняется xuiyviz ∈ L для всех i > 0.

11

Page 12: Александр Охотин 1 октября 2020 г. - spbu.ruokhotin/teaching/tcs_fl...Теоретическая информатика, осень 2020 г. Лекция 5.

Доказательство. Пусть G = (Σ, N,R, S) — грамматика, задающая язык L. Пусть m =maxA→α∈R |α|. Тогда число p определяется как p = m|N |+1.

Пусть w ∈ L — строка длины не менее чем p. Доказательство основано на анализеструктуры дерева разбора w. Внутренняя вершина s в дереве называется точкой ветвле-ния, если в этом месте листья разделяются не менее чем на две непустых группы; инымисловами, дело не обстоит так, что у одного потомка s все листья, а у остальных ни одного.

В этом дереве строится путь из корня, на каждом шаге выбирается наибольшее под-дерево данной вершины. Разделение гарантировано, коль скоро в текущем поддереве неменее чем m листьев. В каждой точке ветвления число листьев уменьшается не более чемв m раз, и потому, после прохождения ` точек ветвления, в текущем поддереве останетсяне менее |w|

m` листьев. Поскольку в строке не менее чем m|N |+1 символов, можно проделатьне менее чем |N | + 1 нетривиальных разбиений, и потому путь будет содержать не менеечем |N |+ 1 точек ветвления.

Среди нижних |N | + 1 точек ветвления на этом пути где-то повторится дважды неко-торая метка A ∈ N . На отрезке между этими двумя экземплярами A какие-то поддеревьяответвляются направо, какие-то — налево. Пусть u — строка листьев в левых поддеревьях, аv — строка листьев в правых. Поскольку на этом пути есть не менее одной точки ветвления(верхнее A — одна из этих точек), хотя бы одна из строк u и v должна быть непустой.

vu

Avu

A y

A

x z

S

A

x z

S

vu

A

A

x z

S

y

y

Рис. 5: (слева) Дерево разбора строки w = xuyvz в лемме о накачке; (посередине) Накачан-ное дерево разбора xu2yv2z; (справа) Накачивание 0 раз: дерево разбора xu0yv0z.

Пусть w = xuyvz — разбиение всей строки, в котором обозначены эти подстроки u и v.Такое разбиение показано на рис. 5(слева).

Участок дерева между двумя указанными экземплярами A можно повторить 0 и болеераз, получая деревья разбора для строки xuiyviz. Повторение 2 раза показано на рис. 5(по-середине), а повторение 0 раз — на рис. 5(справа).

Список литературы

[1961] Y. Bar-Hillel, M. Perles, E. Shamir, “On formal properties of simple phrase-structuregrammars”, Zeitschrift fur Phonetik, Sprachwissenschaft und Kommunikationsforschung,14 (1961), 143–177.

[1962] S. Ginsburg, H. G. Rice, “Two families of languages related to ALGOL”, Journal of theACM, 9 (1962), 350–371.

12