Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория вычислительных процессов. Лабораторный практикум. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
41
w1
w2
w1
w2
w1 a1
a2
a3
a4
a5
z1
a2
a2
a2
a2
a4
z2
a3
a5
a1
a3
a1
Входное слово
z1
z1
z2
z1
z1
#
Состояния
a1
a2
a2
a5
a4
a2
Выходное слово
w1
w2
w2
w1
w2
w2
Реакция автомата
мент времени. На каждом шаге работы автомата головки перемещаются на одну ячейку вправо. Когда головка на входной ленте прочитает по­следний символ слова, автомат перейдет в новое состояние и на следую­щем шаге запишет на выходную ленту последний символ слова. На этом шаге автомат прочитает «пустой» символ с входной ленты и остановится. На выходной ленте будет записано слово, длина которого на единицу больше длины входного слова. Но первый символ выходного слова не зависит от входного слова (определяется только начальным состоянием), поэтому реакцией автомата на входное слово будет сформированное сло­во на выходной ленте без первого символа.
Автомат Мура может быть задан табличным способом одной таблицей переходов и выходов. В ней строки соответствуют символам входного алфавита, а столбцы — состояниям. Столбец, соответствующий состоя­нию as «отмечается» выходным символом wg = (as). В клетке на пе­ресечении строки zf и столбца as записывается состояние ah = δ(as, zf). Пример таблицы переходов и выходов автомата Мура представлен в таб­лице 7.
Таблица 7
Таблица переходов и выходов
Автомат Мура называется полностью определенным, если полностью определенными являются функции переходов и выходов, в противном случае автомат будет частичным. В таблицах полностью определенного автомата заполнены все клетки. Полностью определенный автомат может обработать любое входное слово, составленное из символов входного алфавита, т.е. он задает полностью определенную словарную функцию.
Процесс обработки входного слова z1z1z2z1z1 автоматом (табл. 7) пред­ставлен в таблице 8.
Таблица 8
Процесс обработки входного слова
42
a1
a3
a5
a2
a4
z1
z2
z1
z1
z1
z1
z2
z2
z2
z2
w1
w1
w1
w2
w2
Автомат Мура можно задать графом, в котором вершины соответ­ствуют состояниям. Из вершины, соответствующей состоянию as идет дуга в вершину, соответствующую состоянию ah, если ah = δ(as, zf). Вер­шина, соответствующая состоянию as , отмечается символом wg, если wg =
(as). Граф автомата (табл. 7) представлен на рис.9.
Рис. 9. Граф автомата Мура
Трансформация автоматов Мили и Мура
Автоматы Мили и Мура эквивалентны по своей вычислительной мощности, т.е. если словарная функция может быть вычислена некото­рым автоматом Мили, то существует автомат Мура, который вычисляет эту же функцию, и, наоборот, если словарная функция может быть вы­числена некоторым автоматом Мура, то существует автомат Мили, кото­рый вычисляет эту же функцию. Далее рассмотрим процедуры, которые автомат одного типа преобразуют в автомат другого типа, вычисляющего ту же самую словарную функцию. Такие процедуры называются транс-
формацией автоматов.
Трансформация автомата Мура в автомат Мили легко выполняется при графовом способе задания автомата. Для получения графа автомата Мили необходимо выходной символ wg, записанный рядом с вершиной as исходного автомата Мура, перенести на все дуги, входящие в эту верши­ну. На рис. 10 приведен граф автомата Мили, эквивалентного автомату Мура (рис. 9). В полученном автомате Мили состояний столько же, сколько и в исходном автомате Мура.
43
a1
a3
a5
a2
a4
z1
z2
w2
w1
z1
z1
z1
z1
z2
z2
z2
z2
w2
w2
w1
w1
w1
w2
w2
w1
Рис. 10. Граф автомата Мили
Для того, чтобы выполнить обратное преобразование — трансформа­цию автомата Мура в автомат Мили, выходные символы, записанные на входящих в вершину дугах, перенести на эту вершину. Но в общем слу­чае, например в автомате Мили (рис. 8), выходные символы, записанные на входящих в вершину дугах, могут различаться (см. вершины a2 и a3 на рис. 8). В этом случае вершину нужно «разбить» на столько новых вер­шин, сколько различных выходных символов записано на входящих ду­гах, и к каждой новой вершине приписать соответствующий выходной символ. Таким образом получим множество состояний и функцию выхо­дов автомата Мура. Функция переходов (дуги графа) определяется сле­дующим образом: если в графе автомата Мили из вершины as в вершину
ah идет дуга, начало которой отмечено символом zf, а конец — символом wg, то в графе автомата Мура из каждой вершины, образованной верши-
ной as автомата Мили, нужно провести дугу в вершину, образованную вершиной ah и отмеченную символом wg, и отметить эту дугу символом zf. Описанное выше правило необходимо применить ко всем дугам исходно­го автомата Мили. Граф автомата Мура, полученного трансформацией автомата Мили (рис. 8), представлен на рис. 11. В полученном автомате Мура состояний больше, чем в исходном автомате Мили.
Эквивалентность автоматов
Два автомата одного типа эквивалентны, если они вычисляют одну и ту же словарную функцию, т.е. если их реакции на все возможные вход­ные слова одинаковы.
44
a1
a
3
2
a5
a
2
1
a4
z1
z2
w1
w2
z1
z1
z1
z1
z2
z2
z2
z2
w1
w1
w1
w1
w1
w2
z2
a
3
1
z1
z2
z1
a
2
2
w1
w1
w1
w2
w2
a1
a
3
2
a5
a
2
1
a4
z1
z2
w1
w2
z1
z1
z1
z1
z2
z2
z2
z2
w1
w1
w1
w2
w1
z2
a
3
1
z1
z2
z1
a
2
2
w1
Рис. 11. Граф автомата Мура
Эквивалентные автоматы одного типа могут иметь различное количе­ство состояний. Например, если трансформировать автомат Мура (рис.
11), то получим автомат Мили (рис. 12), эквивалентный автомату (рис. 8), в котором на два состояния больше.
Рис. 12. Граф автомата Мили
45
Проблема эквивалентности автоматов разрешима, ее можно свести к проблеме эквивалентности состояний. Состояния ai и aj эквивалентны, если реакции на все возможные входные слова автомата, начавшего рабо­ту в состоянии ai и автомата, начавшего работу в состоянии aj одинаковы.
Алгоритм проверки эквивалентности двух состояний основан на следующем факте:
состояния ai и aj эквивалентны тогда и только тогда, когда выполня­ются следующие два условия:
1) условие подобия — для автомата Мили: (ai, zf) = (aj, zf) для всех zf
из входного алфавита; для автомата Мура: (ai) = (aj);
2) условие преемственности — состояние ai' = δ(ai, zf) эквивалентно
состоянию aj' = δ(aj, zf) для всех zf из входного алфавита.
В процессе выполнения алгоритма строится дерево проверки эквивалентности состояний, в вершинах которого записываются пары состояний (в корне – пара проверяемых на эквивалентность состояний), а дуги отмечаются символами входного алфавита. Вершины строящегося дерева определяются как внутренние, граничные, дублирующие, конечные или различающие. Граничная — это вершина, являющаяся листом и еще не обработанная алгоритмом. После обработки эта вершина станет либо внутренней, имеющей сыновей, либо дублирующей, либо конечной, либо различающей. Дублирующая — это вершина, являющаяся листом и содержащая такую пару состояний, которая есть хотя бы в одной из внутренних вершин. Конечная — это вершина, которая содержит два одинаковых состояния. Различающая — это вершина, для которой не выполняется условие подобия.
Алгоритм проверки эквивалентности двух состояний следующий.
1. Построить вершину — корень дерева, записать в нее пару
проверяемых состояний. Если нарушено условие подобия, конец алгоритма. В противном случае корень считать граничной вершиной и выполнить п.2.
2. Пока есть граничные вершины, обрабатывать их в порядке
построения следующим образом.
Если обрабатываемая вершина дублирующая или конечная, то обработать следующую граничную вершину.
Если обрабатываемая вершина различающая, то пара проверяемых состояний является неэквивалентной, конец алгоритма.
В остальных случаях для каждого символа входного алфавита создать вершину, в которую провести дугу, отмеченную этим символом, из обрабатываемой вершины; в созданную вершину записать состояния
46
w1
w1
w1
w1
w2
w2
z2
z1
z1
a2 a4
a2 a2
a5 a3
a4 a2
a1 a1
z2
конечная
конечная
дублирующая
переходов из состояний, записанных в обрабатываемой вершине, при обработке символа, отмечающего входящую дугу.
Обработанные граничные вершины считать внутренними.
3. Если в множестве вершин дерева нет различающей, то пара
проверяемых состояний является эквивалентной, конец алгоритма.
При построении дерева для наглядности целесообразно приписывать выходные символы к дугам при проверке эквивалентности состояний автомата Мили и к вершинам — при проверке эквивалентности состояний автомата Мура.
Если в результате выполнения алгоритма построено дерево, в котором нет различающей вершины, то все пары состояний, записанные в вершинах дерева, являются эквивалентными. Если же в результате выполнения алгоритма построено дерево, в котором есть различающая вершина, то неэквивалентными будут все пары состояний, записанные в вершинах на пути от корня к различающей вершине (для них не выполняется условие преемственности).
Пример 3. Определить, являются ли эквивалентными состояния a2 и a4 автомата Мили, граф которого представлен на рис. 8.
Решение. Дерево проверки эквивалентности состояний a2 и a4 пред­ставлено на рис. 13. В нем нет различающей вершины, поэтому состояния a2 и a
эквивалентны.
4
Рис. 13. Дерево проверки эквивалентности состояний a2 и a4
47
w1
w1
w1
w1
z2
z1
z1
a
2
1
a4
a
2
2
a
2
2
a5 a
3
1
a4 a
2
1
a1 a1
z2
w1
w1
конечная
конечная
дублирующая
Пример 4. Определить, являются ли эквивалентными состояния a a4 автомата Мура, граф которого представлен на рис. 11.
Решение. Дерево проверки эквивалентности состояний a ставлено на рис. 14. В нем нет различающей вершины, поэтому состояния
1
a
и a
эквивалентны.
2
4
1
и a4 пред-
2
1
и
2
Рис. 14. Дерево проверки эквивалентности состояний a
1
и a
2
4
Автоматы эквивалентны, если эквивалентны их начальные состояния.
Пример 5. Определить, являются ли эквивалентными автоматы Мили, графы которых представлены на рис. 8 и рис. 12.
Решение. Дерево проверки эквивалентности автоматов представлено на рис. 15. В нем нет различающей вершины, поэтому автоматы эквива­лентны. При построении дерева проверки эквивалентности автоматов нужно учитывать то, что в нем не может быть конечных вершин, т. к. в каждой вершине записываются различные состояния из различных авто­матов.
Минимизация автоматов
Автомат, имеющий наименьшее количество состояний по отношению
ко всем другим автоматам, ему эквивалентным, называется минималь- ным. Проблема определения минимальности автомата разрешима. Авто­мат минимален, если в нем нет состояний, не достижимых из начального, и нет ни одной пары эквивалентных состояний.
48
z
1
a1 b1
a2 a
2
1
a3 a
3
2
a2 a
2
2
a1 a1
a1 a1
a5 a5
a2 a
2
1
a2 a
2
2
a5 a5
a4 a4
a1 a1
a2 a
2
2
a3 a
3
1
a2 a
2
1
a1 a1
z
1
z
1
z
1
z
1
z
1
z
1
z
2
z
2
z
2
z
2
z
2
z
2
z
2
w
2
w
2
w
2
w
2
w
2
w
2
w
2
w
2
w
1
w
1
w
1
w
1
w
1
w
1
w
1
w
1
w
1
w
1
w
1
w
1
w
1
w
1
w
1
w
1
w
1
w
1
Для получения минималиного автомата Мили или Мура можно ис­пользовать алгоритм, аналогичный алгоритму минимизации одноленточ­ных автоматов:
1. Пока в автомате есть хотя бы одна пара эквивалентных состояний,
исключить одно из состояний пары.
2. Исключить все состояния, недостижимые из начального.
Рис. 15. Дерево проверки эквивалентности автоматов Мили
49
1
K
},,{
312
1111
KKKK
}{
1
1 1
aK
},,{
4
2
2
1
2
2
1
aaaK
},,{
5
2
313
3
1
aaaK
2
K
Для минимизации автоматов Мили и Мура, так же, как и для миними­зации одноленточных автоматов, можно использовать алгоритм, осно­ванный на разбиении множества состояний на классы эквивалентных со­стояний и замене каждого класса одним состоянием (объединении класса эквивалентных состояний в одно состояние).
Для разбиения множества состояний на классы эквивалентных со­стояний используется понятие k-эквивалентных состояний. Состояния ai и aj автомата Мили (Мура) называются k-эквивалентными, если их реакции на все возможные слова длины k одинаковы. Множество всех k-эквивалентных между собой состояний образует класс k- эквивалентных состояний. Для нахождения разбиения множества состоя­ний на классы эквивалентных состояний последовательно определяются разбиения на классы 0-, 1-, …, k-эквивалентных состояний. Процесс за­канчивается, когда на некотором шаге классы k-эквивалентных состояний совпадут с классами (k – 1)-эквивалентных состояний. В этот момент раз­биение на классы k-эквивалентных состояний будет представлять собой разбиение на классы эквивалентных состояний.
Два состояния ai и aj автомата Мура являются 0-эквивалентными, ес-
ли (ai) = (aj). В автоматах Мили нет 0-эквивалентных состояний. Два состояния ai и aj автомата Мили являются 1-эквивалентными, если (ai, zf) = (aj, zf) для всех zf из входного алфавита.
Состояния ai и aj автомата Мили (Мура) будут k-эквивалентными, ес­ли они (k – 1)-эквивалентны и состояния ai' = δ (ai, zf) и aj' = δ (aj, zf) так же (k – 1)-эквивалентны для всех x из алфавита автомата (состояния ai' и aj' принадлежат одному и тому же классу (k – 1)-эквивалентных со­стояний).
Процесс нахождения разбиения на классы эквивалентных состояний можно представить построением таблиц переходов из состояний в классы k-эквивалентных состояний. Рассмотрим пример нахождения разбиения на классы эквивалентных состояний множества состояний автомата Мили, граф которого представлен на рис. 12. Разбиение
на классы
1-эквивалентных состояний представляет собой
ения
,
на классы 2-эквивалентных состояний строим таблицу перехо-
и
. Для определения разби-
, где
дов из состояний в классы 1-эквивалентных состояний (табл. 9), в клетках которой вместо состояния перехода записывается класс 1-эквивалентных состояний, которому принадлежит состояние перехода. Состояния, при­надлежащие одному и тому же классу 1-эквивалентных состояний и
50
1
1
K
2
1
K
3
1
K
a1
a
2
1
a
2
2
a4
a
3
1
a
3
2
a5
z
1
2
1
K
2
1
K
2
1
K
2
1
K
2
1
K
2
1
K
2
1
K
z
2
3
1
K
3
1
K
3
1
K
3
1
K
1
1
K
1
1
K
1
1
K
a1
a
3
2
z1
z2
w1
w2
z1
z2
w1
w2
z1
a
2
2
w1
z2
w1
Таблица 9
Таблица переходов в классы 1-эквивалентных состояний
имеющие в таблице переходов в классы 1- эквивалентных состояний одинаковые столбцы, объединя-ются в класс 2-эквивалентных состоя­ний. По таблице 9 видим, что все 1-эквивалентные состояния являются 2­эквивалентными, поэтому классы 1-эквивалентных состояний совпадают с классами 2-эквива-лентных состояний. Классы 1-эквивалентных состо­яний представляют собой классы эквивалентных состояний.
Теперь сформируем новое множество состояний, выбрав произвольно по одному состоянию из каждого класса эквивалентных состояний {a1,
2
2
a
, a
}. В графе исходного автомата (рис. 12) исключим все вершины,
2
3
соответствующие состояниям, не принадлежащим выбранному множе­ству состояний, вместе с выходящими дугами. В результате могут по­явиться «висячие» дуги, которые не входят ни в какую вершину графа. Если такая дуга в исходном графе шла в вершину, соответствующую со­стоянию ai, то в новом графе ее нужно провести в вершину, соответству­ющую состоянию aj, принадлежащему множеству выбранных состояний и эквивалентному состоянию ai. Выполнив такие построения для всех «висячих» дуг, получим граф автомата, представленный на рис. 16. В этом автомате нет ни одной пары эквивалентных состояний и состояний, недостижимых из начального, поэтому он является минимальным.
Рис. 16. Граф минимального автомата Мили
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]