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

Правило 3 (удаление несущественных присваиваний).

Пусть P – некоторый процесс с СО.

Обозначим знакосочетанием op(P ) совокупность всех операторов, входящих в какой-либо из СО процесса P .

Будем называть переменную x XP несущественной, если

x не входит ни в один из

операторов проверки условия, и

операторов вывода

из op(P )

если x входит в правую часть какого-либо оператора присваивания из op(P ) вида (y := e), то переменная y

– несущественная.

Правило 3 заключается в удалении из всех СО редуцируемого процесса операторов присваивания вида (x := e), где переменная x – несущественная.

7.8.9Пример редукции

Рассмотрим в качестве примера редукцию процесса Bu er n (графовое представление которого приведено в параграфе 7.5.3).

Ниже мы будем использовать следующее соглашение:

• если в СО Op

cond (Op) = >

то первый оператор в таком СО мы писать не будем

операторы, входящие в СО, можно располагать не только по горизонтали, но и по вертикали

скобки, в которые заключена последовательность операторов, из которых состоит СО, можно опускать.

Исходный процесс Bu er n имеет следующий вид:

207

k := k + 1 k := k 1 - O - B P

@

 

 

 

 

 

 

@ (k

n) ?

 

 

 

 

 

 

@

 

 

 

q := q

[f]

(k < n) ?

 

@

@

 

 

q := q0

·

 

 

 

 

 

 

 

@

 

 

 

D (k ≤ 0) ?

C

 

 

 

R@ E

 

 

 

 

 

 

 

 

?

 

 

 

@@

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

In ? f

(k > 0) ?

 

 

 

Out ! qˆ

 

 

 

 

 

F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

In ? f

 

Out ! qˆ

 

 

?

 

?

?

 

L

 

 

 

 

 

 

 

- M

Первый шаг редукции заключается в удалении состояния C (применяется правило 1 для s = C):

 

 

 

 

 

 

 

1

 

 

 

- O

k := k + 1 - B

k := k −

 

 

P

 

 

 

 

 

 

 

 

k < n

 

@

 

 

 

 

 

 

 

( k ≤ 0

) ?

@

 

 

 

 

 

 

 

 

 

 

 

 

 

@ (k

n) ?

q := q

[f]

 

 

 

 

@

@

 

 

 

 

q := q0

·

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( k > 0

 

@

@

 

 

E

 

 

D

 

 

 

 

) ?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k < n

 

 

 

@

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@R

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

In ? f

 

 

 

 

Out ! qˆ

 

 

 

 

 

 

 

 

 

 

 

 

 

?

 

In ? f

 

? Out ! qˆ

 

 

 

?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L

 

 

 

 

F

 

 

 

- M

 

 

 

 

 

 

 

 

208

Поскольку n > 0, то формулу (k < n) (k ≤ 0) в метке перехода из B в D можно заменить на равносильную формулу k ≤ 0.

Второй и третий шаги редукции – удаление состояний O и P :

q := q · [f] k := k + 1

 

 

 

 

 

 

- B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

(k

0) ?

 

 

@ (k

n) ?

q := q0

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

 

 

@

@

 

 

 

k := k − 1

 

 

D

 

 

 

R@ E

 

 

 

 

 

(0 < k < n) ?

 

 

 

 

 

 

 

 

 

 

 

@@

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

In ? f

 

 

 

Out ! qˆ

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

 

 

 

 

 

 

In ? f

 

 

 

 

?

 

 

 

? Out ! qˆ

 

?

 

 

 

L

 

 

 

 

 

 

 

- M

 

Четвёртый и пятый шаги редукции – удаление состояний D и E:

209

q := q · [f] k := k + 1

 

 

 

 

 

- B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@

 

 

(k

 

0) ?

 

@

 

 

 

In ? f

 

 

 

@ (k ≥ n) ?

q := q0

 

 

 

 

 

 

 

 

@ Out ! qˆ

 

 

 

 

 

@

 

k := k − 1

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

@

@

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(0 < k < n) ?

@

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

In ? f

 

Out ! qˆ

 

?

?

?

L

 

 

 

- M

Шестой шаг редукции – удаление состояния F :

q := q · [f] k := k + 1

 

 

 

 

 

- B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(k

 

 

 

@

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0) ?

A@

 

 

 

 

 

 

 

 

 

 

A

(k ≥ n) ?

 

 

 

In ? f

 

 

A @

q := q0

 

 

 

 

 

 

A @ Out ! qˆ

 

 

 

 

 

 

 

 

 

AA

@

 

 

 

 

k := k − 1

 

 

 

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

@

 

 

 

 

 

 

 

 

 

 

 

 

A

@

 

 

 

 

 

(0 < k < n) ?

A

 

@

 

 

 

 

 

 

 

 

In ? f

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

(0 < k < n) ?A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

Out ! qˆ

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

 

L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?

 

 

 

 

 

 

 

 

AU

?

 

M

210

Седьмой и восьмой шаги редукции – применение правила 2 к переходам вида B → L и B → M. В получившемся процессе мы заменяем

формулу (0 < k < n) (k ≤ 0) – на равносильную ей формулу (k < n)

формулу (0 < k < n) (k ≥ n) – на равносильную ей формулу (k > 0)

q := q · [f] k := k + 1

 

- B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

 

 

 

 

 

A

 

 

 

q := q0

 

 

 

 

A

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

AA

 

 

 

k := k − 1

 

 

 

 

A

 

 

 

 

 

 

 

 

A

 

 

 

 

 

(k < n) ?

 

A

 

 

 

 

 

In ? f

 

A

 

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

(k > 0) ?A

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Out ! qˆ

A

 

 

 

L

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

AU

M

Девятый и десятый шаги редукции – удаление состояний L и M. В результате мы получаем не редуцируемый далее процесс с СО с одним состоянием:

 

(k < n) ?

 

 

 

(k > 0) ?

 

 

 

 

In ? f

 

 

 

Out ! qˆ

 

 

(7.23)

 

q := q · [f]

 

 

q := q0

 

 

 

k := k + 1

 

 

1

 

 

-

B

k := k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

211