formal_language_theory / lectures / unit_10
.pdfПример 1.5. В предыдущем примере по простой sdts T = ({E},{a, +, *}, {a, +, *}, R, E), где
R = { (1) E +EE, EE+ ;
(2)E *EE, EE* ;
(3)E a, a},
был построен эквивалентный npdt
P = ({q}, {a, +, *}, {E, a, +, *, a’, +’, *’}, {a, +, *},, q, E, ),
где 1) (q, , E) = {(q, +EE+’, ), (q, *EE*’, ), (q, aa’, )},
2)(q, b, b) = {( q, , )} для всех b {a, +, *},
3)(q, , с’) = {( q, , с)} для всех с {a, +, *}.
Ret 84 |
81 |
|
Пример 1.5.
Теперь по этому недетерминированному преобразователю P мы построим эквивалентную простую схему синтаксически управляемой трансляции, воспользовавшись алгоритмом, описанным в лемме 1.2.
82
Пример 1.5.
Положим T = ({S, [qEq], [qaq], [q + q], [q *q], [qa’q], [q +’q], [q *’q]}, {a, +, *},{a, +, *}, R, S),
R= {(1) S [qEq], [qEq];
(2)[qEq] [q + q] [qEq] [qEq] [q +’q],
|
[q + q] [qEq] [qEq] [q +’q]; |
|
(3) |
[qEq] [q *q] [qEq] [qEq] [q *’q], |
|
|
[q *q] [qEq] [qEq] [q *’q]; |
|
(4) |
[qEq] [qaq] [qa’q], [qaq] [qa’q]; |
|
(5) |
[qaq] a, ; |
(8) [qa’q] , a; |
(6)[q +q] +, ; (9) [q +’q] , +;
(7)[q * q] *, ; (10) [q * ’q] , *}.
83
Пример 1.5.
Эта схема мало похожа на исходную, в которой было всего три правила. Однако её можно эквивалентными преобразованиями привести к исходной.
84
Пример 1.5.
Во-первых, правые части правил 5–10 можно подставить в правые части правил 2–4. В результате получим
R’ = { (1) S [qEq], [qEq];
(2’) [qEq] + [qEq] [qEq], [qEq] [qEq] +; (3’) [qEq] * [qEq] [qEq], [qEq] [qEq] *; (4’) [qEq] a, a}.
Легко видеть, что из (S, S) выводится в точности то же, что и из ([qEq], [qEq]). Остается заменить в правилах 2’–4’ слева и справа [qEq] на простое E и отбросить бесполезное правило 1, чтобы получить исходную схему.
85
(P) e(P’ )
Лемма 1.3. Пусть
P = (Q, , , , , q0, Z0, F) —
недетерминированный магазинный преобразователь и = (P).
Существует недетерминированный мага-
зинный преобразователь P’, такой, что
e(P’) = .
Ret 105
86
(P) e(P’ )
Доказательство. Построим pdt P’, исходя из того соображения, что он будет моделировать pdt P до тех пор, пока тот не примет свою входную цепочку, а затем pdt P’ будет опустошать свой магазин, совершая - движения и не выдавая ничего на выход.
Таким образом, npdt P’ будет принимать то же самое множество входных цепочек при пустом магазине, какое pdt P принимает при конечных состояниях, и выдавать на выход такие же выходные цепочки.
87
(P) e(P’ )
Итак, положим (ср. с теор. 5.1 - II)
P’ = (Q’, , ’, , ’, q0’, Z0’, ),
где входной и выходной алфавиты — такие же, как у npdt P, а множество конечных состояний, которое в этом случае несущественно, пусто;
Q’ = Q {q0’, qe}, q0’, qe Q;
’ = {Z0’}, Z0’ .
88
(P) e(P’ )
Отображение ’ определяется следующим образом:
1. ’(q0’, , Z0’ ) = {(q0, Z0Z0’, )}
воспроизводит начальную конфигурацию недетер- минированного магазинного преобразователя P.
2.’(q, a, Z) содержит все элементы (q, a, Z) для q Q, a { }, Z , — реализуется собственно моделирование движений pdt P.
3.’(q, , Z) содержит (qe, , ), если q F, Z ’, — происходит переход в состояние-“ловушку”.
4.’(qe, , Z) = {(qe, , )} для всех Z ’ —
производится опустошение магазина.
89
(P) e(P’ )
I. Докажем сначала, что
если (x, y) (P), то (x, y) e(P’). Пусть (x, y) (P), т. е.
(q0, x, Z0, ) (q, , , y), где q F.
Посмотрим, как будет действовать npdt P’ на таком же входе.
Согласно п.1 построения имеем
(q0’, x, Z0’, ) (q0, x, Z0 Z0’, ).
90