Две булевы функции Ф и F эквивалентны, если на всех возможных интерпретациях они принимают одинаковые значения. Поскольку число интерпретаций у булевыx функций конечно, то, перебрав их все, можно проверить, эквивалентны ли Ф и F. Если число интерпретаций велико, можно привести Ф и F к нормальной формe и сравнить их представления. Для проверки эквивалентности Ф и F можно также проверить аналитически, будет ли общезначима функция Ф = F.
Иная ситуация с конечными автоматами. Два конечных автомата эквивалентны, если
реализуемые ими отображения вход-выход эквивалентны. Конечный автомат реализует
отображение бесконечного множества входных последовательностей сигналов в
бесконечное множество выходных последовательностей сигналов. Поэтому автоматные
отображения нельзя сравнить простым перечислением их значений на всех возможных
аргументах. Дадим несколько определений.
Расширим функции перехода и выхода автомата так, чтобы они были определены на
множествах последовательностей (цепочках) сигналов входного алфавита.
Пусть - алфавит (конечное множество
символов) и
* множество
цепочек из элементов
. Будем о
бозначать ε пустую цепочку, вовсе не содержащую символов, а ^ - операцию
конкатенации (склеивания) цепочек. Так, аав^ва = аавва. Знак операции
конкатенации часто опускают. Цепочки будем обозначать малыми греческими
буквами
,
.
Очевидно, ε является как левой, так и правой единицей
для операции конкатенации:
аε = εа = а.
Определение 3 |
---|
Пусть А = <S, X, Y, s0,![]() ![]() Расширенными функциями перехода и выхода автомата А называются функции ![]() |
Расширенные функции переходов и выходов определены на множестве входных последовательностей (входных цепочках) в отличие от обычных функций переходов и выходов, которые определены на множестве входных сигналов.
Пусть в некоторое состояние автомата не существует пути из начального состояния. Иными словами, в эти состояния автомат не может попасть. Такие состояния автомата называются недостижимыми, остальные - достижимыми. Очевидно, что недостижимые состояния и переходы из них можно отбросить: они не влияют на поведение конечного автомата. Дадим формальное определение.
Определение 4 |
---|
Пусть А = <S, X, Y, s0,![]() ![]() Состояние s ![]() ![]() ![]() ![]() ![]() ![]() Состояние конечного автомата является недостижимым тогда и только тогда, когда под воздействием любой входной цепочки автомат не переходит в это состояние:
Недостижимо
(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, ![]() ![]() ![]() ![]() а) их входные алфавиты совпадают: ХА = Хв = X; б) реализуемые ими отображения совпадают: ( ![]() ![]() ![]() ![]() ![]() ![]() |
Два конечных автомата (см. рис. 5) имеют разное число состояний
и эти состояния по-разному называются. Но внешнее поведение у них похожее:
реакция первого автомата на входную цепочку aabbabb равна
A*(q0, aabbabb) =
B*(SO, abbabb) = 0001001.
Однако ответить на вопрос, эквивалентны ли эти автоматы,
перебором их реакций ia всех входные цепочки невозможно:
входных цепочек бесконечно много.
Поэтомy проблема эквивалентности конечных автоматов является нетривиальной.
Оказывается, существует простой метод решения этой проблемы.
Этот метод основан на понятии прямого произведения конечных автоматов.
Определение 6 |
---|
Прямым произведением конечных автоматов А = <SA, X, YA, S0A, ![]() ![]() ![]() ![]() с одинаковым входным алфавитом X (обозначается А х В) называется автомат А х В = <SAx SB, X, YA x YB, (S0A, S0B), ![]() ![]()
a) (
б) ( |
Иными словами, конечный автомат, являющийся прямым произведением двух конечных автоматов, в качестве своих состояний имеет пары состояний исходных автоматов, его начальное состояние есть пара их начальных состояний, выходной алфавит - множество пар выходных символов автоматов-множителей, функции переходов и выходов определены покомпонентно. Таким образом, прямое произведение конечных автоматов - это просто два стоящих рядом невзаимодействующих конечных автомата, синхронно работающих на одном общем ходе (рис. 6).
Теорема 1. (Теорема Мура) |
---|
Два конечных автомата А = <SA, X, YA, S0A, ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Доказательство.(Необходимость.) Пусть А и В эквивалентны, то есть
(
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, б показан этот же автомат с выброшенными недостижимыми состояниями. По графу переходов видно, что из всех достижимых состояний под воздействием входных сигналов автомат А х В выдает пары одинаковых выходных сигналов. Следовательно, автоматы А и В эквивалентны.