logo
Лекции

Двухступенчатый триггер

Эквивалентные автоматы

Два автомата Sa и Sb с одинаковыми входными и выходными алфавитами называются эквивалентными. Для любого автомата Мили существует эквивалентный ему автомат Мура, и, обратно, для любого автомата Мура существует эквивалентный ему автомат Мили.

Рассмотрим алгоритм перехода от произвольного конечного автомата Мили к эквивалентному ему автомату Мура.

Пусть дан конечный автомат Мили Sa={Aa,Xa,Ya,da,la}, имеющий множество состояний Aa={a0,a1,…,ai,…,an}, множество входных и выходных сигналов Xa={x1,x2,…,xj,…,xm} и Y={y1,y2,…,yg,…,yk}, а также функции переходов da(a,x) и выходов la(a,x).

Требуется построить эквивалентный ему автомат Мура Sb={Ab,Xb,Yb,db,lb}, у которого Xb=Xa, Yb=Ya, так как множества входных и выходных сигналов у эквивалентных автоматов должны совпадать.

Для определения множества состояний Ab автомата Мура образуем всевозможные пары вида (ai,yg), где yg – выходной сигнал, приписанный к дуге, входящей в состояние ai.  Например, для вершины ai имеем пары (ai,y1), (ai,y2), (ai,y3).

 

 

 

Если такие пары мы образуем для всех вершин, то получим множество пар, которое является множеством состояний автомата Мура:

Ab={(a0,y1), (a0,y2),…,(an,yk)}={b1,b2,…,bn}, где bl=(ai,yg).

Функции выходов lb и переходов db определим следующим образом. Каждому состоянию автомата Мура, представляющему собой пару вида (ai,yg) поставим в соответствие выходной сигнал yg, то есть функция выходов равна yg=lb[(ai,yg)] = lb[bl]. Если в автомате Мили Sa был переход da(ai,xj)=as и при этом выдавался выходной сигнал la(ai,xj)=yp, то в эквивалентном автомате Мура будет переход из множества состояний (ai,yg), где g принадлежит G, G – множество номеров выходных сигналов, приписанных к входящей ai дуге, в состояние (as,yp) под действием входного сигнала xj.

Автомат Мили (фрагмент)

Автомат Мура эквивалентный автомату Мили

Автомат Мили имеет два состояния, а автомат Мура три : (ai,yf), (ai,yh), (ai,yp). Если автомат Мили был в состоянии ai и пришел входной сигнал xj, то должен выработаться выходной сигнал yp. Поэтому в автомате Мура из состояний, порождаемых ai, то есть из состояний (ai,yf) и (ai,yh) при поступлении xj переход должен идти в состояние, отмеченное выходным сигналом yp, то есть в (as, yp). В качестве начального состояния автомата Мура можно взять любое состояние из множества (a0, yr).

Преобразование автомата Мили в автомат Мура

Рассмотрим пример: Пусть необходимо преобразовать автомат Мили, в автомат Мура.

Граф автомата Мили

В автомате Мили Xa = {x1, x2}, Ya = {y1,y2}, Aa = {a0, a1,a2}.

В эквивалентном автомате Мура Xb = Xa = {x1, x2}, Yb = Ya = {y1, y2}.

Построим множество состояний Ab автомата Мура, для чего найдем множества пар, порождаемых каждым состоянием автомата Sa.

Состояние

Порождаемые пары

a0

{(a0, y1), (a0, y2)}={b1, b2}

a1

{(a1, y1)}={b3}

a2

{(a2, y1), (a2, y2)}={b4, b5}

Отсюда имеем множества Ab состояний автомата Мура Ab = {b1, b2, b3, b4, b5}. Для нахождения функции выходов lb с каждым состоянием, представляющим собой пару вида (ai, yg), отождествим выходной сигнал, являющийся вторым элементом этой пары. В результате имеем: lb(b1) = lb(b3) = lb(b4) = y1; lb(b2) = lb(b5) = y2.

Построим функцию переходов db. Так как в автомате Sa из состояния a0 есть переход под действием сигнала x1 в состояние a2 с выдачей y1,то из множества состояний {b1, b2}, порождаемых a0, в автомате Sb должен быть переход в состояние (a2, y1) = b4 под действием сигнала x1. Аналогично, из {b1, b2} под действием x2 должен быть переход в (a0, y1) = b1. Из (a1, y1) = b3 под действием x1 переход в (a0, y1) = b1, а под действием x2 – в (a2, y2) = b5. Наконец из состояний {(a2, y1), (a2, y2)} = {b4, b5} под действием x1 в (a0, y2) = b2, а под действием x2 – в (a1, y1) = b3. В результате имеем граф и таблицу переходов эквивалентного автомата Мура.

Граф эквивалентного автомата Мура

Таблица переходов

yg

y1

y2

y1

y1

y2

xj\bi

b1

b2

b3

b4

b5

x1

b4

b4

b1

b2

b2

x2

b1

b1

b5

b3

b3

В качестве начального состояния автомата Sb можно взять любое из состояний b1 или b2, так как оба порождены состоянием a0 автомата Sa.

Переход от автомата Мура к автомату Мили

Обратная задача, то есть переход от автомата Мура к автомату Мили решается чрезвычайно просто. Пусть дан автомат Мура Sb ={Ab, Xb, Yb, db, lb}.

Необходимо построить эквивалентный ему автомат Мили Sa = {Aa, Xa, Ya, da, la}.

По определению эквивалентности имеем Xa = Xb; Ya = Yb. Кроме того, Aa = Ab, da= db. Остается только построить функцию выходов. Если в автомате Мура db(ai, xj) = as, а lb(as) = yg, то в автомате Мили la(ai, xj) = yg. Другими словами la(ai, xj) = lb(db(ai, xj)). Таким образом, таблица переходов автоматов Мили и Мура совпадают. А таблица выходов эквивалентного автомата Мили строится так, что в каждую клетку таблицы записывается выходной сигнал, которым отмечено состояние, расположенное в данной клетке. Пример: Пусть дан автомат Мура:

xj\yi

y1

y1

y3

y2

y3

xj\ai

a0

a1

a2

a3

a4

x1

a1

a4

a4

a2

a2

x2

a3

a1

a1

a0

a0

Тогда эквивалентный ему автомат Мили имеет следующую совмещенную таблицу переходов и выходов.

xj\ai

a0

a1

a2

a3

a4

x1

a1/y1

a4/ y3

a4/ y3

a2/ y3

a2/ y3

x2

a3/ y2

a1/ y1

a1/ y1

a0/ y1

a0/ y1