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

4.6Распознавание сильной эквивалентности

4.6.1Отношение µ(P1, P2)

Пусть заданы два процесса

Pi = (Si, s0i , Ri) (i = 1, 2)

Определим функцию 0 на множестве всех отношений из S1 в S2, которая сопоставляет каждому отношению µ S1 × S2 отношение µ0 S1 × S2, определяемое следующим образом:

 

 

 

 

s10

 

S1

: (s1

a s10 )

 

R1

 

 

 

 

 

 

 

 

a

 

 

Act

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(s2

 

s20 )

 

R2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

def

 

(s1, s2)

 

 

 

 

s0

 

 

S2 :

 

 

 

 

 

 

 

µ0 =

 

 

 

 

 

 

2

 

 

 

(

(s0

 

 

 

 

 

 

 

 

 

 

 

 

, s0

) µ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

 

 

 

 

 

 

 

S1

S2

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

×

 

 

 

s20

 

S2 : (s2

s20 )

 

R2

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

R1

 

 

 

 

 

 

 

 

 

 

 

 

 

(s1

 

s10 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s0

 

 

S1 :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

(

(s0

)

 

 

 

 

 

 

 

 

 

 

 

 

, s0

 

µ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нетрудно доказать, что для каждого µ S1 × S2

µ удовлетворяет условиям 1 и 2

µ µ0

из определения БМ

Следовательно,

 

(

(s0, s0) µ

µ – БМ между P1 и P2 1 20

µ µ

Нетрудно доказать, что функция 0 монотонна, т.е.

если µ1 µ2, то µ01 µ02.

Обозначим символом µmax объединение всех отношений из совокупности

{µ S1 × S2 | µ µ0}

(4.30)

Заметим, что отношение µmax принадлежит совокупности (4.30), так как для каждого µ (4.30) из

83

 

µ S

• включения µ (

(4.30) µ) = µmax, и

• монотонности функции 0

следует, что для каждого µ (4.30)

 

µ S

µ µ0 µmax0

Поэтому µmax =

µ µmax0 , т.е. µmax (4.30).

(4.30)

Заметим, что имеет место равенство

µmax = µ0max

так как из включения µmax µ0max и из монотонности функции

0 следует включение

µ0max µ00max

т.е. µ0max (4.30), откуда, в силу максимальности µmax, следует

включение

µ0max µmax

Таким образом, отношение µmax является

наибольшим элементом совокупности (4.30), и

наибольшей неподвижной точкой функции 0. Мы будем обозначать это отношение знакосочетанием

µ(P1, P2)

(4.31)

Из теоремы 2 следует, что

P1 P2 (s01, s02) µ(P1, P2)

Из определения отношения µ(P1, P2) вытекает, что данное отношение состоит из всех пар (s1, s2) S1 × S2, таких, что

P1(s1) P2(s2)

Отношение µ(P1, P2) можно рассматривать как меру близости между P1 и P2.

84

4.6.2Полиномиальный алгоритм распознавания сильной эквивалентности

Пусть P1 и P2 – процессы вида

Pi = (Si, s0i , Ri) (i = 1, 2)

Если множества S1 и S2 конечны, то задача проверки истинности соотношения

P1 P2

(4.32)

очевидно является алгоритмически разрешимой: например, можно перебрать все отношения µ S1 × S2 и для каждого из них проверить условия 0, 1 и 2 из определения БМ. Алгоритм заканчивает свою работу, когда

нашлось хотя бы одно отношение µ S1 × S2 которое удовлетворяет условиям 0, 1 и 2 из определения БМ, в этом случае он выдаёт ответ

P1 P2

или

все отношения µ S1 × S2 перебраны, и ни одно из них не удовлетворяет условиям 0, 1 и 2 из определения БМ, в этом случае он выдаёт ответ

P1 6 P2

Если P1 6 P2, то вышеприведённый алгоритм выдаст ответ после перебора всех отношений между S1 и S2, число которых

– 2|S1|·|S2|, т.е. данный алгоритм имеет экспоненциальную сложность.

Данную задачу можно решить гораздо более эффективным алгоритмом, который имеет полиномиальную сложность. Для построения такого алгоритма мы рассмотрим следующую последовательность отношений между S1 и S2

i | i ≥ 1}

(4.33)

85

def

× S2, и i ≥ 1

def

где µ1 = S1

µi+1 = µi0.

Из соотношения µ1 µ2 и монотонности функции 0 следует,

что

µ2 = µ01 µ02 = µ3 µ3 = µ02 µ03 = µ4

и т.д.

Таким образом, последовательность (4.33) монотонна:

µ1 µ2 . . .

Поскольку все члены последовательности (4.33) являются подмножествами конечного множества S1 × S2, то данная последовательность не может бесконечно убывать, она стабилизируется на некотором члене, т.е. для некоторого i ≥ 1 имеет место соотношение

µi = µi+1 = µi+2 = . . .

Докажем, что член µi, на котором наступает стабилизация, совпадает с отношением µ(P1, P2).

Т.к. µi = µi+1 = µ0i, т.е. µi – неподвижная точка функции 0, то

µi µ(P1, P2)

(4.34)

поскольку µ(P1, P2) – наибольшая неподвижная точка функ-

ции 0.

 

• Т.к. для каждого j ≥ 1 имеет место включение

 

µ(P1, P2) µj

(4.35)

поскольку

 

включение (4.35) верно для j = 1, и

если включение (4.35) верно для некоторого j, то, в силу монотонности функции 0, имеем соотношения

µ(P1, P2) = µ(P1, P2)0 µ0j = µj+1

т.е. включение (4.35) будет верно для j + 1

86

то, в частности, (4.35) верно для j = i.

Из (4.34) и (4.35) для j = i следует равенство

µi = µ(P1, P2)

(4.36)

Таким образом, задача проверки истинности соотношения P1 P2 может быть решена путём

нахождения первого члена µi последовательности (4.33), который удовлетворяет условию µi = µi+1, и

проверки для этого µi соотношения

(s10, s20) µi

(4.37)

Алгоритм выдаёт ответ

P1 P2

тогда и только тогда, когда выполняется (4.37).

Для вычисления членов последовательности (4.33) можно использовать нижеследующий алгоритм, который по отношению

µ S1 × S2 вычисляет отношение µ0:

 

 

 

 

 

 

 

 

 

 

µ0

:=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

цикл для каждого (s1, s2) µ

 

 

 

 

 

 

 

включить := >

s10 , a :

s1

 

 

 

a

- s10

цикл для каждого

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

-

 

 

 

 

 

найдено :=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

цикл для каждого

 

s20

:

s2

 

 

 

 

 

 

 

 

s20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 2

 

 

 

 

 

 

 

 

 

найдено := найдено

(s0 , s0 )

µ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

конец цикла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

включить := включить

 

 

 

 

 

 

 

 

 

 

 

 

найдено

 

 

 

конец цикла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

цикл для каждого

s0 , a :

s2

 

 

 

 

 

-

s0

 

 

 

 

 

 

 

 

найдено :=

 

 

 

 

 

 

 

 

a -

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

цикл для каждого

 

s10

:

s1

 

 

 

 

 

 

 

 

s10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

найдено := найдено

 

(s10 , s20 )

 

µ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

конец цикла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

включить := включить

 

найдено

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

конец цикла

 

 

 

{

 

 

 

 

 

 

 

}

 

если включить то µ0

:= µ0

(s1, s2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

конец цикла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

87