Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теория автоматов и формальных языков. Учебник.pdf

§ 5.2. Деревья вывода 241
S
A
S
A
. . .
ε
(а) Случай A → ε
X1X
(б) Случай
A → X1. . . Xk,
X
2
k
k >
0
Рис. 37. Деревья, соответствующие размеченным выводам.
индукции легко доказать, что
yield(T
) =
xn. Это даёт ещё одно до-
казательство того, что для любого выводимого словаαсуществует
дерево вывода с кроной α.
Если деревоTсоответствует размеченному выводуπ, то мы будем
говорить, что выводπсоответствует деревуT. Из определения 90
следует, что любому выводу соответствует единственное дерево. Обратное неверно, одному дереву могут соответствовать различные
размеченные выводы.
Пр име р 82. Вывод
E ⇒ E + T ⇒ E + T ∗ F ⇒ E + F ∗ F ⇒ T + F ∗ F
соответствует дереву вывода с рис. 35а. Другой вывод, соответствующий
этому же дереву, такой:
E ⇒ E + T ⇒ T + T ⇒ T + T ∗ F ⇒ T + F ∗ F.
В теории КС-грамматик большое значение имеют выводы, в которых нетерминалы заменяются в некотором специальном порядке.

242 Глава 5. Контекстно-свободные грамматики и языки
Оп ределен ие 91.
Размеченный вывод называется л е в ы м (соответственно п р а в ы м), если на каждом шаге заменяется самый
левый (соответственно самый правый) нетерминал.
Так как в левом и правом размеченном выводе заменяемый нетерминал определяется однозначно, то будем писать просто «левый
вывод» и «правый вывод». Еслиβполучается изαзаменой самого
левого (соответственно самого правого нетерминала) в грамматикеG,
то мы будем писать
α ⇒
β
(соответственно
G,l
α ⇒
β
). Как обычно,
G,r
если грамматика ясна из контекста, то мы будем опускать индекс
G
и писать просто
∗
α ⇒
β
), то будем говоритьβл е в о в ы в о д и м о (соответственно
G,r
α ⇒lβиα ⇒rβ
. Если
α ⇒
∗
β
(соответственно
G,l
п р а в о в ы в о д и м о) из α.
Теорема 120.
Терминальное словоwвыводимо в КС-грамматике
G тогда и только тогда, когда оно левовыводимо в G.
Доказательство. Если словоwвыводимо, то существует дерево
вывода с кронойw. Построим по этому дереву вывод так же, как
это было сделано во второй части доказательства теоремы 119. В
базисе индукции все выводы являются левыми. Для крон деревьев
T
существуют левые выводы по индукционному предположению. Так
как все листья помечены терминалами илиε, то вывод
(5)
будет
левым.
Для слов, содержащих нетерминалы, теорема 120 в общем случае
неверна. Например, если грамматика G содержит правила
i
S → AB, A → a, B → b,
то слово Ab выводимо из S, но не левовыводимо.
Теперь мы докажем, что между левыми выводами и деревьями
вывода существует взаимно однозначное соответствие.
Теорема 121.
Разным левым выводам соответствуют разные дере-
вья вывода.

§ 5.2. Деревья вывода 243
Доказательство. Пусть есть два разных левых вывода:
α1⇒ α2⇒ · ·· ⇒ αn,
β1⇒ β2⇒ · ·· ⇒ βk,
причём α1= β1= S. Возможны два случая.
Сначала предположим, что один из выводов (например, первый)
является продлением другого, то есть
1
6 i 6 k
. Тогда дерево, соответствующее выводу слова
жит больше вершин, чем дерево, соответствующее выводу слова
n > kиαi=
βiдля всех
αn, содер-
βk,
поэтому деревья различны.
Теперь предположим, что выводы становятся разными наi-м шаге,
то есть αj= βjпри j < i и αi6= βi. Тогда
α
= xAγ, αi= xδ1γ, β
i−1
где
x ∈
Σ∗,
δ16=δ2. Выводу слова
α
выводаT. После применения правил
= xAγ, βi= xδ2γ,
i−1
соответствует некоторое дерево
i−1
A → δ1и
A → δ2получатся
деревья, изображённые на рис. 38. Поскольку у вершины с меткой
в этих деревьях сыновья различаются, то деревья, соответствующие
выводам α1⇒∗αnи β1⇒∗βk, тем более различны.
A
Теорема 122.
Разным деревьям вывода соответствуют разные ле-
вые выводы.
Доказательство. ПустьTи
сотамиhи
h0соответственно. Проведём индукцию поH=
T0— два разных дерева вывода с вы-
max{h, h0}
Б а з и с и н д у к ц и и . СлучайH= 0 невозможен, так как корни
обоих деревьев помечены нетерминаломS, поэтому им соответствует
один и тот же вывод
рева имеют некоторые метки
Y1, . . . , Yl, причём
X1. . . Xk6=Y1. . . Ym. Тогда выводы
S ⇒
0
S
. ЕслиH= 1, то листья первого де-
l
X1, . . . , Xk, а листья второго — метки
S ⇒lX1. . . X
и S ⇒lY1. . . Ymразличны.
Ш а г и н д у к ц и и . Если сыновья корней деревьев различны,
то выводы различаются на первом шаге (как в базисе). Пусть сыновья каждого корня помечены символами
X1, . . . , Xn. Пусть
Tiи
.
k

244 Глава 5. Контекстно-свободные грамматики и языки
T
A
δ
1
T
A
δ
2
Рис. 38. Деревья вывода для разных левых выводов.
0
T
— поддеревья, у которых корнем являетсяi-й сын корня дерева
i
T
или
T0соответственно. Так как
T 6=T0, то
Ti6=T
рогоi. Выберем наименьшее из такихi. Обозначим через
дерева
α1, . . . , αnи
деревьям
Tj, а через
0
α
, . . . , α
1
T1, . . . , Tnи
ствующие деревьям
0
α
— крону дерева
j
0
существуют левые выводы, соответствующие
n
T
Tjи
0
, . . . , T
1
T
0
. При этом левые выводы, соответ-
n
0
, совпадают при
j
T
0
j
(1
6 j 6 n
j < i
0
для некото-
i
αjкрону
). Тогда для слов
по теореме 121. По
индукционному предположению левые выводы, соответствующие деревьям
Tiи
0
T
, различны. Следовательно, различны и левые выводы,
i
соответствующие деревьям T и T0.
Одно и то же слово может иметь в КС-грамматике несколько разных деревьев вывода. Содержательно это означает, что грамматика
может проанализировать слово несколькими различными способами.
Часто хотелось бы иметь для языка грамматику, в которой такой
неоднозначности нет. Например, различные интерпретации входных
слов недопустимы для языков программирования. Мы приходим к
следующему определению.
Оп ределен ие 92.
КС-грамматикаGназывается о д н о з н а ч -
н о й, если для любого слова
w ∈ L(G
) существует единственное (с

§ 5.2. Деревья вывода 245
точностью до изоморфизма) дерево вывода вG. КС-грамматика
называется н е о д н о з н а ч н о й , если существует слово
w ∈ L(G
G
),
для которого в G существует более одного дерева вывода.
КС-язык называется о д н о з н а ч н ы м, если он порождается некоторой однозначной КС-грамматикой. КС-язык называется
н е о д н о з н а ч н ы м, если он не порождается никакой однозначной
КС-грамматикой.
Из теорем 121 и 122 получается простой критерий однозначности.
Сл едствие 123. КС-грамматика G однозначна тогда и только то-
гда, когда для каждого слова
w ∈ L(G
) существует единственный
левый вывод.
Пр име р 83. Рассмотрим КС-грамматику G
S → 0S1 | SS | 01.
Эта грамматика порождает язык правильной расстановки скобок без пустого
слова, то есть
w
= 010101 существуют два дерева вывода, показанные на рис. 39. Этим
Lск\ { ε }
. Эта грамматика неоднозначна, так как для слова
деревьям соответствуют следующие левые выводы:
S ⇒lSS ⇒l01S ⇒l01SS ⇒l0101S ⇒l010101,
S ⇒lSS ⇒lSSS ⇒l01SS ⇒l0101S ⇒l010101.
0
с правилами
ск
Однако язык
однозначной грамматикой G
Lск\{ε }
однозначен, так как он порождается следующей
00
:
ск
S → T S | T
T → 0S1 | 01.
На рис. 40 показано дерево вывода слова 010101 в этой грамматике.
Докажем, что грамматика
T ⇒∗w
, то словоwнельзя представить в виде конкатенации двух непустых
00
G
однозначна. Сначала заметим, что если
ск
правильных скобочных слов. Для слова 01 это проверяется непосредственно.
Пусть
поэтомуv— правильное скобочное слово. Если
T ⇒0S1⇒∗0v1. По лемме о выводимости конкатенации
w0— непустой префикс слова
S ⇒∗v
,

246 Глава 5. Контекстно-свободные грамматики и языки
S
S
S S
0 1
S S
0 1 0 1
S S
0 1 0 1
Рис. 39. Деревья вывода слова 010101 в грамматике G
S
T S
SS
0 1
0
.
ск
0 1
T S
0 1
T
0 1
Рис. 40. Дерево вывода слова 010101 в грамматике G
00
ск
.

§ 5.2. Деревья вывода 247
w
, то
w0= 0
v0, где
следовательно, w0/∈ Lск.
Теперь докажем, что для любого правильного скобочного слова
существует единственное дерево вывода в
длине w.
Б а з и с и н д у к ц и и . Если
дерево соответствует выводу S ⇒ T ⇒ 01.
Ш а г и н д у к ц и и . Предположим сначала, чтоwнельзя представить в
виде конкатенации двух правильных скобочных слов. Тогда первым шагом
вывода не может быть
правильные скобочные слова. Значит, вывод имеет вид
По лемме о выводимости конкатенацииw= 0v1 для некоторогоvтакого,
что
S ⇒∗v
единственное дерево вывода, значит, дерево для w также единственно.
Предположим теперь, чтоwявляется конкатенацией правильных скобочных слов. Пустьw=uv, причёмu— кратчайший префиксw, принадлежащий языку
меняться правило
причём
не являются правильными скобочными словами и потому не выводимы из
T
, а более длинные префиксы либо не являются правильными скобочными
словами, либо являются конкатенацией двух таких слов и потому тоже не
выводимы изT. По индукционному предположению для каждого из слов
uиv
при рассмотрении первого случая). Следовательно, дерево вывода для
также единственно.
. Но по индукционному предположению для словаvсуществует
T ⇒∗u,S ⇒∗v
существует единственное дерево вывода (дляuэто проверяется как
v0— префикс словаv. Тогда
|w|
= 2, то естьw= 01, то единственное
S ⇒ T S
Lск. По доказанному выше на первом шаге не может при-
S → T
, следовательно, вывод имеет вид
. Действительно, более короткие префиксы слова
, потому что и изS, и изTвыводимы
|v0|0> |v0|1и
0
G
. Проведём индукцию по
ск
|w0|0> |w0|1,
S ⇒ T ⇒0S1⇒ w
S ⇒ T S ⇒∗w
w 6=ε
w
w
В параграфе 7.2 мы докажем, что неоднозначные языки существуют. Однако проверить однозначность алгоритмически невозможно.
В параграфе 8.1 мы докажем, что не существует алгоритмов ни
для проверки однозначности КС-грамматики, ни для проверки того,
порождает ли КС-грамматика однозначный язык.
Деревья вывода имеют многочисленные применения в доказательстве свойств КС-грамматик. Если в выводе на некотором шаге
применяется правило
A → αBβ
, то нетерминалBне обязательно
.
,

248 Глава 5. Контекстно-свободные грамматики и языки
заменяется на следующем шаге. Из-за этого слово может выводиться
не «по частям», а сразу «в нескольких местах». В дереве вывода
же символы, на которые заменяетсяB, находятся рядом с «местом
замены». Это значительно упрощает работу с выводами. Мы воспользуемся этим в следующей главе при доказательстве теорем о
различных преобразованиях КС-грамматик.
Задачи
194. Докажите лемму 115.
195. Постройте однозначные грамматики для следующих языков:
(а) L1= { aibj: i, j > 0, i 6= j };
i
i
i
i
n
1
(б) L2= { a
1
b
. . . a
(в) L3= { w ∈ { a, b }∗: |w|a< |w|b};
(г) L4= { 0, 1 }∗\ Lск.
196.
Постройте деревья вывода следующих слов в грамматиках из предыдущей
задачи:
(а) w1= aaab, w2= bb, w3= aabbbb;
(б) w1= aabbaabbaabb, w2= aaaabbbb;
(в) w1= abbb, w2= babab, w3= bbbaab;
(г) w1= 011, w2= 000, w3= 01001.
197.
Постройте все деревья вывода в грамматике
w2= ¯aab¯b¯aa, w3= a¯ba¯ab¯bb¯a.
198.
Постройте однозначные грамматики для языка Дика и ограниченного языка
Дика.
199.
Является ли однозначной грамматика для языка Лукасевича из задачи 189?
200. Докажите, что грамматики G
201.
Пустьπ= ((
x1, i1,1), . . . ,(x
грамматикеG. Докажите, что еслиT— дерево, соответствующееπ, тоT— дерево
вывода в грамматике G с кроной xn.
202.
Каким свойством должно обладать дерево выводаT, чтобы ему соответ-
ствовал единственный вывод?
203.
Докажите, что слово выводимо в КС-грамматикеGтогда и только тогда,
когда оно правовыводимо в G.
204.
Докажите, что различным деревьям вывода соответствуют различные пра-
вые выводы.
n
b
: n > 0, n нечётно, ijчётны };
0
00
и G
ск
n−1
из примера 83 эквивалентны.
ск
, i
,1), xn) — размеченный вывод в КС-
n−1
D
G
2
для слов
w1=
aa¯a¯bb¯a
,

§ 5.3. Автоматы с магазинной памятью 249
205.
Докажите, что различным правым выводам соответствуют различные дере-
вья вывода.
206.
Пусть КС-грамматика содержит правила
anимеет в этой грамматике ровно
Каталана. (Числа Каталана определяются рекуррентным соотношением
n−1
X
Cn=
207.
нечно много деревьев вывода.
CiC
i=1
Приведите пример КС-грамматики, в которой некоторое слово имеет беско-
n−i−1
для n > 0.)
Cnдеревьев вывода, где
S → SS | a
. Докажите, что слово
Cn—n-е число
C0= 1,
§ 5.3. Автоматы с магазинной памятью
Автоматы с магазинной памятью (сокращённо МП-автоматы)
представляют собой обобщение конечных автоматов. Как и конечный
автомат, МП-автомат читает входное слово посимвольно слева направо и, достигнув конца, определяет, принадлежит ли слово языку.
При этом МП-автомат дополнительно оснащён магазином, в котором
могут храниться произвольные слова. На каждом шаге МП-автомат
видит не только входной символ, но и символ на вершине магазина.
Работа с магазином осуществляется стандартным образом: автомат
может удалить верхний символ или добавить на вершину новые символы. Дадим точные определения.
Оп ределен ие 93.
А в т о м а т с м а г а з и н н о й п а м я т ь ю
(М П - а в т о м а т) — это семёрка M = (Q, Σ, Γ, δ, q0, z0, F ), где:
• Q — конечное множество состояний;
• Σ — входной алфавит;
• Γ — м а г а з и н н ы й алфавит;
• δ :(Q ×(Σ∪ {ε })×Γ)→
P
(
Q ×
fin
Γ∗) — функция переходов
(программа);
• q0∈ Q — начальное состояние;

250 Глава 5. Контекстно-свободные грамматики и языки
• z0∈
• F ⊆ Q — множество заключительных состояний.
Как обычно, элементы множестваδбудем называть командами
автомата. Если (
Функцию переходов будем задавать в виде списка команд.
Оп ределен ие 94.
(Q,Σ,Γ
γ ∈
стве конфигураций автоматаMопределяется следующим образом:
(
q, w, γ)`M(
что:
1) w = aw0;
2) γ = zγ00, γ0= αγ00для некоторого γ00∈ Γ∗.
Из определения непосредственно следует, что автомат не может
сделать очередной шаг, если магазин пуст. Отметим также, что в
нашей записи дно магазина расположено справа, а вершина — слева.
Такая форма записи может показаться необычной, но она позволит
сформулировать в более естественном виде утверждения о связи
МП-автоматов и КС-грамматик.
Подчеркнём, что, как и в случае конечных автоматов, команда
вида
Пустая команда позволяет автомату сделать очередной такт, не читая
входного символа, при этом не требуется, чтобы входных символов
не было. Иными словами,ε— это слово, считываемое на очередном
шаге, а не слово, оставшееся на входной ленте. В отличие от конечных
автоматов, при выполнении пустой команды МП-автомат может не
только изменить состояние, но и выполнить некоторые действия с
магазином.
Язык, распознаваемый МП-автоматом, можно определить разны-
Γ — н а ч а л ь н ы й с и м в о л м а г а з и н а (маркер дна);
p, α)∈ δ(q, a, z
К о н ф и г у р а ц и я МП-автомата
, δ, q0, z0, F
Γ∗. Отношение п е р е х о д а з а о д и н ш а г
q, ε, z → p, α
) — это тройка (
q0, w0, γ0), если существует команда
, может применяться не только в конце слова.
), то мы будем писать
q, w, γ
), где
q ∈ Q,w ∈
q, a, z → q0, α
q, a, z → p, α ∈ δ
`Mна множе-
M
Σ∗,
такая,
=
.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
