Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория языков программирования методов трансляции.-1.pdf
Скачиваний:
13
Добавлен:
05.02.2023
Размер:
1.36 Mб
Скачать

107

С¬qB1…Br, а все вхождения A в области действия оператораSi заменены на С. Если U лежит в области оператора Si, то U¢ - это U, в котором переменная А заменена на С. В противном случае U¢ = U.

Пример. Пусть = (P, {A, B}, {F}), где Р состоит из

T ¬ A*B

T ¬ T+A

F ¬ T*T

Одно применение Т3 позволяет изменить имя переменнойТ, на S.

Таким образом ¢ =( P¢, {A, B},{F})

S ¬ A*B

T ¬ S+A

F ¬ T*T.

Т4: Перестановка

Пусть =(P, I, U) - блок, в котором операторомSi является

A¬qB1…Br оператором Si+1 является C¬yD1Ds, А не совпадает ни с одной переменной С, D1,… Ds и С не совпадает с и с одной из пере-

менных из А, B1…Br тогда преобразованиеТ4 отображает блок в¢=(P¢, I, U¢) где P¢ - это Р в котором Si и Si+1 переставлены.

Пример. Пусть =(P,{A, B},{F, G}), где Р состоят из правил

F¬A+B

G¬A*B.

Можно применить Т4 и отобразить в (P¢, {A, B},{F, G}), где P¢ состоит из правил

G¬A*B

F¬A+B.

6.1.3.Графическое представление блоков

Для каждого блока =(P, I, U) можно найти ориентированный

ациклический граф D, естественным образом представляющий . Каждый лист графаD соответствует одной входной переменной Iв, а каждая его внутренняя переменная вершинаоператор из P. К таким графам легко применить рассмотренные нами преобразования.

Определение. Пусть =(P, I, U) – блок. Построим помеченный граф

D( ):

1)Пусть Р=S1, S2,…,Sn

108

2)Для каждой переменной АÎI образуем вершину с меткойА и будем называть её последним определением для А.

3)Для i=1,2…n делаем следующие: пусть А¬qB1 B2 Br образуем новую вершину, помеченную q, из которой выходят r ориентированных дуг. Пусть j дуга (при упорядоченье дуг слева направо) указывает на последнее определение дляВj 1≤jr. Новая вершина, по-

мечена q, становится последним определением А этой вершине соответствует оператору Si в D.

4) После шага 3) вершины, являющиеся последним определением входных переменных, помечаются как выделенные и отмечаются кружками

Пример: пусть =(Р, {A, B},{F, G})- блок в котором Р составляет

из операторов. Граф D( ) изображен на рис. 11.1.

T¬A+B

F¬A*T

T¬B+F

G¬B*T

+ n4

+ n3

* n2

+ n1

A B

Рис. 11.1. Пример ориентированного ациклического графа.

Четыре оператора из блока соответствуют по порядку вершинам n1, n2, n3 и n4

109

*

Каждый граф представляет класс эквивалентности Û . Если блок

3,4

1 с помощью последовательности преобразований T3 и T4 можно пре-

образовать в блок 2, то блок 1 и 2 имеют один и тот же граф и обратно.

Лемма. Если 1Þ3,4 2, то D( 1)=D( 2)

Определение. Блок = (P, I, V) называется открытым если

1)ни один из операторов Р не имеет вид А¬a где АÎI,

2)в Р нет двух операторов, присваивающих значение одной и той же переменной.

Воткрытом блоке =(P, I, U) все операторы Si из Р присваивают значения переменным Xi, не входящим в I. Открытый блок всегда можно получить с помощью только преобразований Т3.

Лемма. Пусть =(P, I, U)- блок. Тогда существует такой эквива-

лентный открытый блок ¢=(P¢,I¢,U¢), что Û3 ¢

*

Теорема. D( 1) = D( 2) тогда и только тогда, когда 1 Û 2

3,4

Т.е. два блока имеют один и тот же граф тогда и только тогда, когда их можно преобразовать в один в другой переименованием и перестановкой.

Следствие. Если D( 1) = D( 2), то 1 º 2.

Пример. Рассмотрим два блока 1 = {P1, {A, B}, {F}} и 1 = {P2, {A, B}, {F}}, множества Р1 и Р2 для них приведены в табл. 11.1.

Таблица 11.1.

 

Р1

 

Р2

 

 

 

 

 

 

 

C¬A*A

 

C¬B*B

 

 

 

D¬B*B

 

D¬A*A

 

E¬C-D

 

E¬D+C

 

F¬C+D

 

C¬D-C

 

F¬E/F

 

C¬C/E

 

 

Блоки 1 и 2

имеют один и тот же граф, изображенный на рис.

11.2.

 

 

 

 

С помощью преобразования Т3 можно отобразить 1 и 2 в откры-

тые блоки ¢1=(P¢1,{A, B},{X5}) и ¢2=(P¢2,{A, B},{X5}) (табл. 11.2).

 

110

 

/

-

+

*

*

A

B

Рис. 11.2. Граф для 1 и 2.

Таблица 11.2.

Р¢1

Р¢2

 

 

X1¬A*A

X2¬B*B

X2¬B*B

X1¬A*A

X3¬X1-X2

X4¬X1+X2

X4¬X1+X2

X3¬X1-X2

X5¬X3/X4

X5¬X3/X4

 

 

А с помощью оператора перестановки привести и сделать полностью эквивалентными

6.1.4.Критерий эквивалентности блоков

Определение. Блок называется приведенный, если не существует

такой блок ¢,что Þ1, 2 ¢ Приведенный блок не содержит ни бесполезных операторов, ни из-

быточных вычислений