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

Детерминированный магазинный преобразователь

На практике предпочитают использовать детерминированными магазинными преобразователями (dpdt), поскольку в реализации они оказываются более эффективными по сравнению с недетерминированными магазинными преобразователями (npdt).

Когда неважно различать, о каких преобразователях, детерминированных или недетерминированных, идёт речь, используется обозначение pdt.

41

Лемма 1.1. Пусть T = (N, , , R, S) —

простая схема синтаксически управляемой трансляции.

Существует недетерминированный магазинный преобразователь P, такой, что

e(P) = (T).

Доказательство. Построим npdt P, о

котором идёт речь, и покажем, что он реализует трансляцию (T).

Ret 65

42

(T) e(P)

Положим

P = ({q}, , N , , , q, S, ).

Чтобы отличать в магазине P входные символы от выходных, последние переименовываются с помощью гомоморфизма h, определяемого для каждого выходного символа b при помощи равенства h(b) = bтаким образом, чтобы множество символов = {bb } не пересекалось со словарем , т. е. = .

43

(T) e(P)

Отображение определяется так:

1. (q, x0 y0B1x1 y1Bm xm ym, ) (q, , A), если A x0 B1x1 Bm xm, y0 B1 y1Bm ym R,

yi= h(yi), i = 1, 2,…, m, где m 0.

Здесь h(by) = b'h(y) для каждого b и y *, h( ) = .

2.(q, a, a) = {(q, , )} для всех a .

3.(q, , b') = {(q, , b)} для всех b .

Ret 53 Ret 55

44

(T) e(P)

I. Докажем сначала, что

 

*

 

(q, , , y).

если (S, S) (x, y), то (q, x, S, )

Для этого

T

индукцией по длине

вывода l

 

докажем более общее утверждение для любого A N:

 

l

если существует вывод (A, A) (x, y),

то (q, x, A, )

T

(q, , , y).

База. Пусть l = 1. Имеем (A, A) (x, y).

T

На этом единственном шаге вывода применяется правило A x, y R.

Ret 52

45

(T) e(P)

Согласно п.1 определения имеем

(q, xy, ) (q, , A). Поэтому (q, x, A, ) (q, x, xy, ).

Далее согласно п.2

(q, x, xy, ) (q, , y, ).

Наконец, согласно п.3 имеем

(q, , y, ) (q, , , y).

Итак, существует переход

(q, x, A, ) (q, , , y).

46

(T) e(P)

Индукционная гипотеза. Предположим, что вспомогательное утверждение выполняется для всех выводов длиной l n (n 1).

Индукционный переход. Докажем утверждение для l = n + 1.

Пусть

 

n

(A, A) (x0 B1x1Bm xm, y0 B1 y1B m ym ) (x, y)

T

T

— вывод длиной n + 1.

 

Очевидно, что

 

x = x0t1x1t2x2tm xm, y = y0 z1 y1 z2 y2zm ym ,

(1.1)

li

(1.2)

и (Bi, Bi) (ti, zi), li n, i = 1, 2,…, m.

T

 

47

(T) e(P)

На первом шаге данного вывода было применено правило

Ax0 B1x1B2x2Bm xm, y0B1 y1B2 y2Bm ym R

ипотому согласно п.1 построения имеем

(q, x0 y0B1x1 y1B2x2 y2Bm xm ymB, ) (q, , A). (1.3)

Кроме того, согласно индукционной гипотезе из существования частичных выводов (1.2), следует возможность перехода

(q, ti, Bi, )

(q, , , zi), i = 1, 2,…, m.

(1.4)

48

(T) e(P)

Рассмотрим движения pdt P. Учитывая условия (1.1) и (1.3), имеем

(q, x, A, ) = (q, x0t1x1t2x2tm xm, A, )

(q, x0t1x1t2x2tm xm, x0 y0B1x1 y1B2x2y2Bm xm ym, ).

Согласно п.2 построений имеем переход

(q, x0t1x1t2x2tm xm, x0 y0B1x1 y1B2x2 y2Bm xm ym, )

(q, t1x1t2x2tm xm, y0B1x1 y1B2x2 y2Bm xm ym, );

согласно п.3 построений имеем переход

(q, t1x1t2x2tm xm, y0B1x1y1B2x2 y2Bm xm ym, ) (q, t1x1tm xm, B1x1 y1B2x2 y2Bm xm ym, y0).

49

(T) e(P)

Учитывая существование перехода (1.4) для i = 1, получаем:

(q, t1x1t2x2tm xm, B1x1 y1B2x2 y2Bm xm ym, y0)

(q, x1t2x2tm xm, x1 y1B2x2 y2Bm xm ym, y0 z1).

Далее рассуждения с использованием пп.2, 3 построений, а также переходов (1.4) для

i= 2, 3,…, m, повторяются.

Врезультате получаем последующие движения:

50

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