formal_language_theory / lectures / unit_4
.pdfТеорема 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
Теорема 4.8. Существует алгоритм для определения, порождает ли данная КСграмматика G конечный или бесконечный язык.
Доказательство. Пусть p и q — констан-
ты, определяемые теоремой “uvwxy” 4.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