Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
57
Добавлен:
16.04.2015
Размер:
912.3 Кб
Скачать

Теорема 4.7 — “uvwxy

Пусть существует цепочка z L, причём

z > p, где p = 2k – 1.

Тогда самый длинный путь в дереве вывода цепочки z длиннее k, ибо в противном случае z 2k – 1, и это противоречило бы предположению, что z > p.

Рассмотрим самый длинный путь R в

дереве вывода z от корня до листа (см. рис. 4.3).

Ret 94

91

R

S

 

 

n1

y

R

T

 

A

1

 

 

T2

R

 

n2

A R

u

R

a

z2

z1 = z3z2z4

Рис. 4.3. Дерево вывода S * z.

Теорема 4.7 — “uvwxy

В нём должны быть два узла n1 и n2 такие, что

1) они имеют одинаковые метки A VN;

2)узел n1 ближе к корню, чем узел n2;

3)часть пути R от узла n1 до листа имеет длину, равную самое большее k + 1.

92

R

S

 

 

n1

y

R

T

 

A

1

 

 

T2

R

 

n2

A R

u

R

a

z2

z1 = z3z2z4

Рис. 4.3. Дерево вывода S * z.

Теорема 4.7 — “uvwxy

Такие узлы всегда можно найти. Действительно, пройдём путь R от листа в сторону корня. Из первых k + 2 пройденных узлов только один имеет терминальную метку. Остальные k + 1 узлов могут быть помечены только нетерминалами.

Рассмотрим поддерево T1 с корнем n1. Его результат, являющийся подсловом слова z, обозначим через z1.

93

Теорема 4.7 — “uvwxy

R

S

R′

 

 

 

n1

y

 

R

T1

 

A

R′

 

T2

 

 

R

 

 

n2

R

R′

 

A

 

 

R

R′

u

 

a

 

 

 

 

 

 

z2

 

R′

 

 

b

 

 

 

z1 = z3z2z4

Рис. 4.3. Дерево вывода S * z.

В поддереве T1 не может быть пути, длиннее k + 1, так как R является самым длинным путём во всём дереве.

Действительно, пусть

R = Sn1 + n1a.

Если допустить, что в T1 существует другой, более длинный, путь, скажем n1b, то путь R= Sn1 + n1b окажется длиннее R, так как n1b длиннее n1a. Однако это противоречило бы первоначальному предположению, что R является одним из самых длинных путей во всём дереве T. Потому z1 2k = q.

94

Теорема 4.7 — “uvwxy

Обозначим через T2 поддерево с корнем n2, а его результат — через z2. Ясно, что цепочка z1 представима в форме z1 = z3z2z4, где z3 и z4 одновременно не пусты.

Действительно, если первое правило, используемое в выводе z1, имеет вид A BC, то поддерево T2 должно быть полностью в пределах либо поддерева с корнем B, либо поддерева с корнем C, в крайнем случае ― совпадать с одним из них (см. рис. 4.4).

95

Теорема 4.7 — “uvwxy

(a)

n1

(б)

A

n1

(в)

A

n1

n2

A

 

 

 

 

 

 

 

 

n2

 

 

 

 

 

 

 

 

 

B

C

 

B

C

B

 

C

 

 

 

 

 

n2

 

 

z2

z4

 

z3

z2

z3 z2

 

z4

 

 

 

 

 

 

B = A, z3 =

C = A, z4 =

 

B A, C A, z

, z

 

 

 

 

 

 

3

4

Рис. 4.4. Три случая (из возможных четырёх) расположения деревьев T1 и T2.

96

Теорема 4.7 — “uvwxy

Теперь мы знаем, что

 

 

 

 

 

 

 

 

 

*

 

*

z3 Az4 и A

*

z2.

 

 

A z1, A

G

G

 

 

G

 

 

 

 

 

 

*

 

 

*

 

 

 

 

 

Поэтому A z Az

z iAz i z iz z i

 

 

 

 

 

 

*

 

 

 

G

3

 

4 G

3 4

G

3 2

4

 

 

 

 

 

 

 

 

 

для любого i 0, и цепочка z представима в

виде z = u z3 z2 z4 y для некоторых u, y

V

*

 

T .

Чтобы закончить доказательство, положим v = z3, w = z2 и x = z4.

97

Ret 88

Теорема 4.8. Существует алгоритм для определения, порождает ли данная КСграмматика G конечный или бесконечный язык.

Доказательство. Пусть p и q — констан-

ты, определяемые теоремой “uvwxy4.7.

Если z L(G) и z > p, то z = uvwxy при

некоторых u, v, w, x, y VT*, v + x 0, и для любого i 0 цепочка u v iwx iy L(G).

Следовательно, если в языке L(G) существует цепочка длины больше p, то язык

L(G) бесконечен.

98

Алгоритмическая разрешимость проблемы конечности или бесконечности языка, порождаемого cfg

Пусть язык L = L(G) бесконечен.

Тогда в нём имеются сколь угодно длинные цепочки и, в частности, цепочка длины больше p + q. Эта цепочка может быть представлена как u v wx y , где vwx q,v + x 0, и цепочка u v i wx iy L для любого i 0. В частности, при i = 0 цепочка uwy L и uwy < uvwxy .

99

Алгоритмическая разрешимость проблемы конечности или бесконечности языка, порождаемого cfg

Убедимся в том, что uwy > p. Так как p + q < uvwxy и

q vwx , то p < uy uwy .

Если uwy > p + q, то эту процедуру можно повторять снова до тех пор, пока мы не найдём в языке L цепочку, длина которой l не будет удовлетворять неравенству

p < l p + q.

Таким образом, язык L бесконечен тогда и только тогда, когда он содержит цепочку длиной l, где p < l p + q.

100

Соседние файлы в папке lectures