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

§ 7.1. Лемма о разрастании для КС-языков 321
ной правой части правила грамматики G:
l = max{|α| : A → α ∈ P }.
Пусть
|N|=m
. В качестве константыkвыберем числоk=
Пустьz— произвольное слово из языкаLтакое, что
|z| > k
m+1
l
. Тогда
существует дерево выводаTс кронойz. Это дерево содержит более
lmлистьев, а его степень не превосходитl. Следовательно, его высота
больше чемm. Выделим в дереве
T
произвольную ветвь длины
большеm. На ней находятся не менееm+ 1 ребра, а значит, не
менееm+ 1 внутренней вершины. Выделим среди этих вершинm+ 1
самую нижнюю. Поскольку грамматика содержит всего лишь
m
нетерминалов, то хотя бы две выделенные вершины помечены одним и
тем же нетерминаломA(см. рис. 47). Тогда крона дерева разбивается
на пять частейu,v,w,x,y, как показано на рисунке. Проверим
выполнение трёх утверждений.
1)
Высота поддерева с корнемA(верхняя вершина на рис. 47) не
превосходитm+ 1, поэтому число листьев этого поддерева не
превосходит l
2)
Если
|vx|
m+1
= k. Поэтому |vwx| 6 k.
= 0, то в грамматике есть вывод
A ⇒+A
. Это проти-
воречит тому, что грамматика приведённая. Значит, |vx| 6= 0.
3)
Из рис. 47 видно, что в грамматикеGсуществуют выводы
S ⇒∗uAy,A ⇒∗vAx,A ⇒∗w
. Поэтому можно построить
выводы
S ⇒∗uAy ⇒∗uwy
.
и
S ⇒∗uAy ⇒∗uvAxy ⇒∗··· ⇒∗uviAxiy ⇒ uviwxiy.
Выберем теперь в качествеGграмматику в нормальной форме
Грейбах. Тогда у каждого нетерминала в дереве вывода есть левый
сын, помеченный терминалом. Это и значит, что |v| 6= 0.

322 Глава 7. Свойства КС-языков
S
A
A
u v w x y
Рис. 47. Дерево вывода «длинного» слова.
Как и лемма 56, лемма о разрастании для КС-языков может
использоваться для доказательства того, что некоторый язык не является контекстно-свободным . Схема доказательства остаётся такой
же, что и для регулярных языков. Мы предполагаем, что язык
L
контекстно-свободен, тогда для него существует константаkиз леммы о разрастании. Мы должны выбрать некоторое слово
z ∈ L
длины
большеkи показать, что не существует разбиения этого слова на пять
частей, удовлетворяющего всем условиям леммы о разрастании. В
отличие от случая регулярных языков, лемма 169 ничего не говорит о
том, где находятся повторяющиеся фрагментыvиx. Поэтому может
потребоваться рассмотреть различные варианты их расположения
внутри z.
Пр име р 100.
контекстно-свободным. Предположим, что
для него существует константаkиз леммы о разрастании. Рассмотрим слово
z=akbkck. Его можно представить в видеz=
Докажем, что язык
L1=
{anbncn:
L1контекстно-свободен. Тогда
uvwxy
n >0}
так, что
не является
|vwx| 6 k
,

§ 7.1. Лемма о разрастании для КС-языков 323
|v| 6
= 0,
uviwxiy ∈ L1для всех
содержать одновременно символыaиc. Рассмотрим различные варианты
расположения подслов v и x внутри z.
1)
Если одно из словv,xсодержит две разные буквы, то
L1, так как нарушен порядок символов.
2)
Предположим, чтоvсодержит символa. Тогда ниv, ниxне содержат
символа c. Значит, z2/∈ L1, так как |z2|a> |z2|c.
3)
Предположим, чтоvне содержитa, но содержитb. Тогдаxтакже не
содержит a. И в этом случае z2/∈ L1, так как |z2|a< |z2|b.
4)
Предположим, наконец, чтоvне содержит ниa, ниb. Тогдаvсодержит
c. Снова z2/∈ L1, так как |z2|a< |z2|c.
Итак, во всех случаях получилось противоречие с леммой о разраста-
нии. Значит, предположение неверно, и язык
свободным.
i >
0. Поскольку
|vwx| 6 k
L1не является контекстно-
, то
vwx
z2=
не может
uv2wx2y /∈
Сл едствие 170.
Класс КС-языков является собственным подклас-
сом класса КЗ-языков.
Доказательство. По следствию 156 любой КС-язык является КЗ-
языком. Язык
{anbncn:
n >0}
не является контекстно-свободным
(пример 100), но является контекстно-зависимым (пример 14).
Пр име р 101.
контекстно-свободным. Допустим, что
константа из леммы о разрастании. Рассмотрим словоz=
надлежит языку
в видеz=
Согласно первому и второму условиям
Пусть |vx| = j. Рассмотрим слово uv2wx2y и найдём его длину. Имеем
С другой стороны
|uv2wx2y| = 2kk + j < 2kk + k = (2k+ 1)k < (2k+ 1)log2(2k+ 1).
Поскольку в этой формуле все числа, кроме последнего, целые, то
Докажем, что язык
L2, его длина большеk, а значит, его можно представить
uvwxy
так, что выполняется заключение леммы о разрастании.
|uv2wx2y| = 2kk + j > 2kk = 2klog22k. (16)
|uv2wx2y| < [(2k+ 1)log2(2k+ 1)]. (17)
L2=
L2контекстно-свободен, и пустьk—
|vwx| 6 kи|w| 6
{a
[n log2n]
:
n >0}
= 0, поэтому
не является
2kk
a
. Оно при-
|vx| < k
.

324 Глава 7. Свойства КС-языков
Объединяя неравенства (16) и (17), получаем
[2klog22k] < |uv2wx2y| < [(2k+ 1)log2(2k+ 1)].
Это значит, что длина слова
вида [
n log2n
]. Но тогда она сама не имеет такого вида. Поэтому
L2, что противоречит лемме о разрастании. Следовательно, язык
uv2wx2y
заключена между соседними числами
uv2wx2y /∈
L2не
контекстно-свободен.
Пр име р 102.
L3=
{ambn:
Допустим, что
Рассмотрим более сложный пример. Докажем, что язык
m, n >0, m делит n }
не является контекстно-свободным.
L3контекстно-свободен, и пустьk— константа из леммы о
разрастании. Пустьp— произвольное простое число большееk(такое число
всегда существует, так как множество простых чисел бесконечно). Пусть
z=apb
2
p
. По лемме о разрастанииzможно представить в видеz=
uvwxy
так, что выполняется заключение леммы. Как и в предыдущем примере
|vx| < k
разных символов, так как тогда в слове
, а значит,
|vx| < p
. Ни одно из словv,xне может содержать двух
uv2wx2y
нарушен порядок букв.
Рассмотрим три случая.
Пустьvиxцеликом содержатся в блоке символовa. Обозначим длину
слова
vx
черезj. Тогда слово
символовb. Так какp— простое число и
uv2wx2y
содержитp+jсимволовaи
p < p+j < p2, тоp+jне делит
p
p2. Получилось противоречие.
Пустьvиxцеликом содержатся в блоке символовb, и пусть по-прежнему
|vx|=j
. Тогда слово
uv2wx2y
содержитpсимволовaи
p2+jсимволовb.
Так как 0 < j < p, то p не делит p2+ j. Снова получилось противоречие.
Пусть, наконец,v=
содержитp+ (
сначала, что
p
+ (
i −1)s > p2+ (
i −1)s
s > t
. Тогда при достаточно большомiмы получим неравенство
asиx=
символовaи
i −1)t
, а значит,p+ (
btдля некоторыхsиt. Слово
p2+ (
i −1)t
i −1)s
символовb. Предположим
не может делить
uviwxiy
p2+ (
i −
1)t. В качестве «достаточно большого»iможно взять любое значение,
удовлетворяющее неравенствуp+ (
[(
p2− p)/(s − t
p2+ (
i −1)t
)] + 2. Предположим теперь, что
для всех
i >
1. Так как
иtвзаимно просты. Следовательно, числа
i −1)s > p2+ (
t < p
и числоpпростое, то числа
|zi|b=
i −1)t
s 6 t
. Тогдаp+ (
p2+ (
, например,i=
i −1)s <
i −1)t
образуют
p
арифметическую прогрессию, в которой начальный член и разность взаимно
просты. По теореме Дирихле эта прогрессия содержит простые числа.
Соответствующее число символовaудовлетворяет двойному неравенству
2
2

§ 7.1. Лемма о разрастании для КС-языков 325
1
< p
+ (
i −1)s < p2+ (
i −1)t
, а значит, не может быть делителем простого
числа p2+ (i − 1)t. Снова получилось противоречие.
Итак, во всех случаях мы пришли к противоречию. Значит, предположение неверно, и язык L3не является контекстно-свободным.
Задачи
259. Докажите, что следующие языки не являются контекстно-свободными:
(а) L1= { w ∈ { a, b, c }∗: |w|a< |w|b< |w|c};
(б) L2= { anw : w — двоичная запись числа n };
(в) L3= { ww : w ∈ { a, b }∗};
(г) L4= { ambncmn: m, n > 0 };
(д) L5= { anb
(е) L6= { a
(ж) L7= { x#y : x, y ∈ { 0, 1 }∗и число с двоичной записью x
260.
Пусть Σ =
вол
aiинтерпретируется как открывающая скобка, а символ
ствующая закрывающая. Пусть
каждого типа расставлены правильно, независимо от скобок других типов (в
этом состоит отличие от ограниченного языка Дика). Более формально, слово
w
принадлежит языку
является правильным скобочным словом для всехi. Докажите, что если
то язык Lnне является контекстно-свободным.
261.
Докажите, что язык программирования C не является контекстно-свобод-
ным.
262.
Докажите, что в лемме о разрастании условие
условие |x| 6= 0.
263.
ПустьG— КС-грамматика без бесполезных нетерминалов. Докажите, что
G
содержит циклы тогда и только тогда, когда существует словоw, имеющее
бесконечно много деревьев вывода в G.
264.
Верно ли, что всякий бесконечный КС-язык содержит бесконечный регу-
лярный подъязык?
[log2n]
: n > 0 };
i
i
1
2
ba
b . . . ba
i
n−1
{ a1, ¯a1, . . . , an, ¯an}
Lnтогда и только тогда, когда его проекция на
i
n
ba
: n > 0, ij> 0, i
= ijдля всех j };
j+1
больше числа с двоичной записью y }.
— алфавит, состоящий из 2nсимволов. Сим-
¯ai— как соответ-
Ln— множество всех слов, в которых скобки
|vx| 6
= 0 можно заменить на
{ ai, ¯ai}
n >
1,

326 Глава 7. Свойства КС-языков
§ 7.2. Лемма Огдена
Лемма Огдена представляет собой обобщение леммы о разрастании
для КС-языков. Она также утверждает, что достаточно длинные
слова из КС-языка можно разбивать на пять частей, но она позволяет
несколько уточнить положение частей u, v, w, x, y.
Ле мма 171
(Лемма Огдена).Пусть языкLпорождается КС-грам-
матикойG. Тогда существует натуральное числоkтакое, что любое
слово
ставить в видеz=
z ∈ L
, в котором выделеныkили более позиций, можно пред-
uvwxy
так, что выполняются следующие условия:
1) w содержит хотя бы одну выделенную позицию;
2)
либо оба словаu,vсодержат выделенные позиции, либо оба
слова x, y содержат выделенные позиции;
3) слово vwx содержит не более k выделенных позиций;
4)
для некоторого нетерминалаAв грамматикеGсуществуют
выводы S ⇒∗uAy, A ⇒∗vAx, A ⇒∗w.
Доказательство. ПустьG= (N,Σ
, P, S),m=|N|,l
— длина
самой длинной правой части правил грамматики G. В качестве константыkвыберем числоk=
z
выделены по меньшей мереkпозиций. Тогда существует дерево
2m+3
l
. Пусть
z ∈ L
, и пусть в слове
выводаTв грамматикеGс кронойz. Назовём лист этого дерева
выделенным, если он соответствует выделенному символу слова z.
Назовём вершинуnдерева в е т в я щ е й с я, если у неё есть два
сына такие, что из каждого достижим выделенный лист. Заметим, что
для того чтобы вершина была ветвящейся, недостаточно, чтобы у неё
было несколько выделенных потомков. Требуется, чтобы эти потомки
попали в разные поддеревья. Построим в дереве ветвь
n0, n1, . . . , n
по индукции.
Б а з и с и н д у к ц и и . n0— корень дерева T .
p

§ 7.2. Лемма Огдена 327
Ш а г и н д у к ц и и . Если
тот сын
ni, из которого достижимо наибольшее число выделенных
вершин. В частности, если
определяется однозначно. Если несколько сыновей
мальное количество выделенных потомков, то в качестве
ni— внутренняя вершина, то
ni— не ветвящаяся вершина, то
niимеют макси-
n
i+1
n
i+1
n
i+1
можно
выбрать любого из них.
Если ni— лист, то ветвь построена. Положим p = i.
Индукцией поjдокажем следующее утверждение: если среди
вершин
менее l
n0, n1, . . . , niесть ровноjветвящихся, то у
2m+3−j
выделенных потомков.
Б а з и с и н д у к ц и и . Еслиj= 0, то среди вершин
niимеется не
n0, n1, . . . , n
нет ветвящихся, поэтому все выделенные листья дереваTдостижимы
из ni. По условию их число не меньше чем l
Ш а г и н д у к ц и и . Пусть среди вершин
ветвящаяся, и пусть
предположению из
листьев. Так как у
n
имеет не меньше выделенных потомков, чем другие сыновья, то
i
0
у неё есть по меньшей мере
n
— самая правая из них. По индукционному
i
0
n
достижимо не менее
i0−1
n
есть не болееlсыновей, а следующая вершина
i0−1
2m+3−j
l
/l
потомков. Поскольку все вершины между
у niтакже есть не менее l
2m+3−(j+1)
выделенных потомков.
Из доказанного утверждения следует, что на ветви
2m+3
.
n0, n1, . . . , niестьj+ 1
2m+3−j
2m+3−(j+1)
=
l
n
и
i
0
l
niне ветвящиеся, то
выделенных
выделенных
n0, n1, . . . , n
есть не менее 2m+ 3 ветвящихся вершин. Действительно, если их
число равноjи
l
выделенных потомков, что невозможно. Пусть
j 62m
+ 2, то у листа
npесть не менее
2m+3−2m+2
l
b1, b2, . . . , b
=
2m+3
нижние 2m + 3 ветвящиеся вершины среди n0, n1, . . . , np.
Назовём вершинуnл е в о й в е т в я щ е й с я, если у неё есть сын,
имеющий выделенного потомка слева от позиции, задаваемой листом
np. Аналогично, назовём вершину п р а в о й в е т в я щ е й с я, если у
неё есть сын, имеющий выделенного потомка справа от
ветвящаяся вершина среди
правой ветвящейся. Следовательно, среди
b1, . . . , b
является либо левой, либо
2m+3
b1, . . . , b
2m+3
np. Всякая
существует
—
i
p
—

328 Глава 7. Свойства КС-языков
либоm+ 2 левые, либоm+ 2 правые ветвящиеся вершины, потому
что в противном случае общее число вершин
biне превосходило бы
2m+ 2. Рассмотрим случай, когда имеетсяm+ 2 левые ветвящиеся
вершины. Пусть l1, l2, . . . , l
Так как число нетерминалов равноm, то среди
ся две вершины
liи
lj, помеченные одним и тем же нетерминаломA.
Тогда словоzразбивается на пять частей
— нижние m + 2 из этих вершин.
m+2
l2, . . . , l
uvwxy
, как показано на
m+2
найдут-
рис. 48. Проверим выполнение четырёх условий.
1) Слово w содержит выделенную позицию — это вершина np.
2)
Так как
ный потомок слева от
l1— левая ветвящаяся вершина, то у неё есть выделен-
np, то есть в словеu. Аналогично,
li—
левая ветвящаяся вершина, поэтому у неё тоже есть выделенный потомок слева от
np, то есть в словеv(оба выделенных
листа показаны на рис. 48).
3)
Поскольку среди вершин пути из
l2в
npесть не более 2m+ 3
ветвящихся, то общее число выделеных потомков вершины
не превосходит
2m+3
l
. Но оно равно числу выделенных позиций
в слове vwx.
l
2
4)
Из рис. 48 видно, что существуют выводы
S ⇒∗uAy,A ⇒∗vAx
A ⇒∗w.
Если среди вершин
b1, . . . , b
естьm+ 2 правые ветвящиеся
2m+3
вершины, то доказательство аналогично, но выделенные позиции
будут находиться в словах x и y.
Лемма о разрастании получается из леммы Огдена, если отметить
в словеzвсе позиции. Отметим, что лемма Огдена не накладывает
никаких ограничений на длины частей словаz, в отличие от леммы
о разрастании. Например, подслово
vwx
может иметь длину больше
k, если некоторые его символы не отмечены.
Продемонстрируем, что существуют не контекстно-свободные языки, для которых выполняется заключение леммы о разрастании.
,

§ 7.2. Лемма Огдена 329
S
l
1
l
i
l
j
u v w x y
Рис. 48. Дерево вывода слова из леммы Огдена.
Теорема 172.
ЯзыкL=
{aibjck:
i, j, k >0, i 6=j, j 6=k, i 6=k }
не
является контекстно-свободным, но для него выполняется заключение
леммы о разрастании.
Доказательство. В качестве константы из леммы о разрастании
выберем число 5. Пустьz=
apbqcr∈ Lи|z| >
5. Существует шесть
вариантов упорядочения чиселp,q,rпо возрастанию. Рассмотрим
случай
p < q < r
. Из этого неравенства и из условияp+q+
r >
следует, что r > 2.
Предположим сначала, что
v=c,w=c,x=ε,y=c
получается слово
а из предположения
z0=
apbqc
r > q
r > q
+ 1. Тогда положимu=
r−2
. Тогда
r−1
. Оно принадлежитL, так как
+ 1 следует
zi=
r −1> q
apbqc
r+i−1
. При
apbq,
. Приi= 0
p < q
i >
0 оба
неравенства тем более выполняются.
Теперь предположим, чтоr=q+ 1,
Так как
|z| >
p 6 q −
1, то
|z| 6(q −
5 получается неравенство 3
q 6=p
+ 2, так чтоz=
1) +q+ (q+ 1) = 3q. Из условия
q >
5, откуда
q >
2. Разобьём
apbqc
q+1
5
,
.

330 Глава 7. Свойства КС-языков
слово так:u=
q−2cq+1
apb
принадлежитL, так как
все слова zi= apb
q−2
apb
,v=bb,w=c,x=ε,y=
q+2(i−1)cq+1
q −26=p
cq. Тогда
. Если же
i >
z0=
1, то
принадлежат L, так как в этом случае
q + 2(i − 1) > q + 1.
Пусть, наконец,r=q+ 1,q=p+ 2, так чтоz=
этого слова равна 3p+ 5. Из неравенства 3p+ 5>5 получаем
иp+ 2>3. Положимu=
Очевидно, что слово
получаем
zi=
apb
z0=
p+2+3(i−1)cp+3
apb
apb
p−1
,v=
p−1cp+3
и
zi∈ L
bbb,w=c,x=ε,y=c
принадлежитL. При
, так какp+2+ 3(i−1)
apb
p+2cp+3
. Длина
p >
i >
1 мы
> p
p+2
+3
при i > 1.
Оставшиеся случаи рассматриваются аналогично, повторяются
фрагменты либо самого длинного блока, либо второго по длине.
Теперь докажем, чтоLне является КС-языком. Предположим,
чтоL— КС-язык. Тогда для него существует константаkиз леммы
Огдена. Рассмотрим словоz=
символыa. Тогда слово представляется в видеz=
k+k!ck+2k!
akb
. Выделим в нём все
uvwxy
так, что
выполняются четыре условия из леммы Огдена. Так как по свойству 1)
словоwсодержит выделенную позицию, тоwсодержит символa.
Следовательно, словаuиvцеликом состоят из символовa. Пусть
v=ap. Из свойства 4) следует, что
zmкак обычно обозначено слово
zm∈ L
uvmwxmy
для любогоm, где через
. Рассмотрим возможные
варианты расположения слова x внутри z.
Еслиxсодержит два разных символа, то
z2=
uvvwxxy /∈ L
, так
как нарушается порядок символов. Это противоречит свойству 4)
разбиения. Следовательно,xцеликом состоит либо из символовa,
либо из b, либо из c.
Пустьx=
ленную позицию. Следовательно,
k+(m−1)(p+q)bk+k!ck+2k!
a
Посколькуp+
в
zm, получаем
Пустьx=
aq. По свойству 2) либоv, либоxсодержит выде-
xv 6=εиp+q 6
= 0. Тогда
zm=
. Выберем в качествеmчислоk!/(p+q) + 1.
q 6 k
, то числоmцелое. Подставляя выражение для
zm=
k+k!bk+k!ck+2k!
a
/∈ L
. Получилось противоречие.
bq. Так какxне содержит выделенных позиций,
m
0
.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
