Две булевы функции Ф и F эквивалентны, если на всех возможных интерпретациях они принимают одинаковые значения. Поскольку число интерпретаций у булевыx функций конечно, то, перебрав их все, можно проверить, эквивалентны ли Ф и F. Если число интерпретаций велико, можно привести Ф и F к нормальной формe и сравнить их представления. Для проверки эквивалентности Ф и F можно также проверить аналитически, будет ли общезначима функция Ф = F.
Иная ситуация с конечными автоматами. Два конечных автомата эквивалентны, если реализуемые ими отображения вход-выход эквивалентны. Конечный автомат реализует отображение бесконечного множества входных последовательностей сигналов в бесконечное множество выходных последовательностей сигналов. Поэтому автоматные отображения нельзя сравнить простым перечислением их значений на всех возможных аргументах. Дадим несколько определений. Расширим функции перехода и выхода автомата так, чтобы они были определены на множествах последовательностей (цепочках) сигналов входного алфавита. Пусть - алфавит (конечное множество символов) и * множество цепочек из элементов . Будем о бозначать ε пустую цепочку, вовсе не содержащую символов, а ^ - операцию конкатенации (склеивания) цепочек. Так, аав^ва = аавва. Знак операции конкатенации часто опускают. Цепочки будем обозначать малыми греческими буквами , . Очевидно, ε является как левой, так и правой единицей для операции конкатенации: аε = εа = а.
Определение 3 |
---|
Пусть А = <S, X, Y, s0,,
> - конечный автомат. Расширенными функциями перехода и выхода автомата А называются функции |
Расширенные функции переходов и выходов определены на множестве входных последовательностей (входных цепочках) в отличие от обычных функций переходов и выходов, которые определены на множестве входных сигналов.
Пусть в некоторое состояние автомата не существует пути из начального состояния. Иными словами, в эти состояния автомат не может попасть. Такие состояния автомата называются недостижимыми, остальные - достижимыми. Очевидно, что недостижимые состояния и переходы из них можно отбросить: они не влияют на поведение конечного автомата. Дадим формальное определение.
Определение 4 |
---|
Пусть А = <S, X, Y, s0,,
>
конечный автомат. Состояние s S называется достижимым тогда и только тогда, когда ( X*) * (s0, ) = s (то есть под воздействием какой-либо цепочки входных сигналов автомат попадает в это состояние). Состояние конечного автомата является недостижимым тогда и только тогда, когда под воздействием любой входной цепочки автомат не переходит в это состояние: Недостижимо (s)( X*)*(s0,a)s. |
Достижимое множество состояний конечного автомата А = < S, X, Y, s0,, > строится с помощью алгоритма, основанного на индукции. Алгоритм разобьем на последовательные шаги. На i-м шаге будем строить множество Qi состояний, достижимых из начального состояния автомата некоторой входной цепочкой длины не более чем i. Очевидно, что Q0 = {S0}. Для любого i очевидно определение . Очевидно также, что не более чем за |S| шагов Qk+i = Qk. Это множество состояний Qk будет включать в себя все достижимые состояния автомата А = <S, X, Y, s0,, > Вернемся теперь к проблеме эквивалентности конечных автоматов.
Определение 5 |
---|
Конечные автоматы А = <SA, ХA, YA, S0A, А, .А> и В = <Sв, Хв, Yв, S0в,,> называются эквивалентными, если выполнены два условия: а) их входные алфавиты совпадают: ХА = Хв = X; б) реализуемые ими отображения совпадают: ( X *)А * (SOA, а) = в *(S0B , а). |
Два конечных автомата (см. рис. 5) имеют разное число состояний и эти состояния по-разному называются. Но внешнее поведение у них похожее: реакция первого автомата на входную цепочку aabbabb равна A*(q0, aabbabb) = B*(SO, abbabb) = 0001001.
Однако ответить на вопрос, эквивалентны ли эти автоматы,
перебором их реакций ia всех входные цепочки невозможно:
входных цепочек бесконечно много.
Поэтомy проблема эквивалентности конечных автоматов является нетривиальной.
Оказывается, существует простой метод решения этой проблемы.
Этот метод основан на понятии прямого произведения конечных автоматов.
Определение 6 |
---|
Прямым произведением конечных автоматов А = <SA, X, YA, S0A, A, A.А> и В = <SB, X, YB, S0B, B, B> с одинаковым входным алфавитом X (обозначается А х В) называется автомат А х В = <SAx SB, X, YA x YB, (S0A, S0B),A x B, А x В> , где: a) (sASA) (sBSB) (xX) AxB((SA,sB),x) = (A(sA,x),B(sB,x));
б) (sASA)
(sBSB)
(xX)
AxB((sA,sB),x) =
(A(sA,x),B(sB,x)); |
Иными словами, конечный автомат, являющийся прямым произведением двух конечных автоматов, в качестве своих состояний имеет пары состояний исходных автоматов, его начальное состояние есть пара их начальных состояний, выходной алфавит - множество пар выходных символов автоматов-множителей, функции переходов и выходов определены покомпонентно. Таким образом, прямое произведение конечных автоматов - это просто два стоящих рядом невзаимодействующих конечных автомата, синхронно работающих на одном общем ходе (рис. 6).
Теорема 1. (Теорема Мура) |
---|
Два конечных автомата А = <SA, X, YA, S0A, A, A.А> и В = <SB, X, YB, S0B, B, B> с одинаковым входным алфавитом являются эквивалентами тогда и только тогда, когда для любого достижимого состояния (SA, SB) в их прямом произведении А х В справедливо: ( x Х) А (SA, х) = В (SB, x). |
Доказательство.(Необходимость.) Пусть А и В эквивалентны, то есть
(
X*)
А *(S0A,
) =
В *(S0B,
).
Докажем при этом предположении:
((SA, SB)
SA x SB) Достижимо
(SA, SB)(x
X)A
(SA,X) = B(SB, x).
В соответствии с определением 4, свойство достижимости состояния
(SA, SB) эквивалентно условию
( X*)*((s0A, s0B)) = (sA,sB). Таким образом, надо доказать, что если
( X*) А *(S0B, ) = В *(S0B, ), то
((sA,sB)
SA
x SB)[(
X*)
*((s0A,s0B), ) =
(sA,sB)
(x
X)A(sA, x) =
B(sB, x)].
Предположим противное, то есть что
((sA,sB)
SA x SB)
[(
X*)
*((s0A,s0B), ) =
(sA,sB)
(x
X)A(sA, x) =
B(sB, x)].
и покажем, что тогда
( X*) А *(S0A, ) = В *(S0B, )
Отрицание следствия можно преобразовать в
((sA,sB)
SA x SB)[(
X*)
*((s0A,s0B), ) =
(sA,sB) & (x X)A(sA, x) B(sB, x)].
Положим а = х. Очевидно, что:
A*(S0A, ) = A*(S0A, x) = A*(S0A, ) ^A(*(S0A, ), X) = A*(S0A, ) ^A( (SA, X)
B*(S0B, ) ^ B(SB, x) = B*(S0B, ) ^B(*(S0B, ), X) = B*(S0B, X) = B* (SB, )
Отсюда:
( X*)
A*(S0A, ) или
( X*)A*(S0A, ) = B*(S0B, ),
что и требовалось доказать.
(Достаточность.) Докажем обратное, то есть в предположении
((SA, sB) SAxSB)
Достижимо
(SA, SB) (x Х) А (SA, x) = B (SB, x)
докажем, что А и В эквивалентны, то есть
(x Х*) А* (S0A, ) = B (S0B, )
Это доказывается индукцией по длине входных цепочек. Иными словами, будем доказывать
(k Х) ( Хk) A*(S0A, ) = B*(S0B, ) для k = 0, 1, ...
Базой индукции является доказательство этого утверждения при k = 0. Оно доказывается непосредственно подстановкой k = 0, поскольку
A*(S0A, ε) = B*(S0B, ε) = ε при входной цепочке е длиной 0.
Шаг индукции. Пусть для некоторого i выполняется
(
Xi)
A*(s0A, ) =
B*(s0B, ).
Докажем, что это выполнится и для i+1. Пусть -
произвольная цепочка длиной i. Поскольку состояние
A*(S0A, )
в автомате А и состояние B*(S0B,
)
в автомате В являются достижимыми, из предположения
((SA, SB) SA x SB) Достижимо (SA, SB)(x X)A (SA,X) = B(SB, x).
следует:
( x X)
A(A*
(s0A, ) x ) =
B(B
*(s0B, ) x ).
Отсюда: ( x X) ( Xi) A *(s0A, x) = B*(s0B, x).
Но при произвольном Xi и произвольном x X очевидно, что x - произвольная цепочка из Xi+1.
Теорема доказана.
Пример 2 (продолжение)
Прямое произведение конечных автоматов А и В, изображенных на рис. 5, представлено на рис. 7, а. На рис. 7, б показан этот же автомат с выброшенными недостижимыми состояниями. По графу переходов видно, что из всех достижимых состояний под воздействием входных сигналов автомат А х В выдает пары одинаковых выходных сигналов. Следовательно, автоматы А и В эквивалентны.