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

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

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
21
1 q0
q1
q2
q3 a q1
q1
q3
q3 b q3
q2
q2
q3
заданным словом соответствует путь из начальной вершины q0. Последо­вательность проходимых вершин этого пути — это последовательность принимаемых автоматом состояний, образ пути по дугам — читаемое слово. Любой путь в графе автомата, начинающийся в вершине q0 и за­канчивающийся в вершине qR, порождает слово, допустимое автома­том.
Автомат (рис. 3) допускает все слова, начинающиеся последователь­ностью символов a, за которой следует последовательность символов b.
Другим способом задания одноленточного автомата является таблица, в которой строки соответствуют символам алфавита, столбцы — состоя­ниям. В клетке, расположенной в строке a и столбце q записывается со­стояние q' , если в программе автомата есть команда q а q' . Столбцы, соответствующие заключительным состояниям, отмечаются единицами. Таблица автомата А, граф которого изображен на рис.3, имеет вид:
Полностью определенным называется одноленточный автомат, у ко- торого в программе существует команда для любой пары (q, a). При таб­личном способе задания полностью определенного автомата заполнена каждая клетка.
Частичным называется одноленточный автомат, у которого в про- грамме не для любой пары (q, a) существует команда. При табличном способе задания частичного автомата некоторые клетки не заполнены.
Детерминированным называется одноленточный автомат, у которого для любой пары (q, a) существует единственная команда, начинающаяся этими символами. При табличном способе задания детерминированного автомата в клетке записано только одно состояние.
Автомат называется пустым, если множество допускаемых им слов пусто (МА = ). Проблема пустоты одноленточного автомата разрешима. Доказательство основано на проверке допустимости конечного множе­ства всех слов, длина которых не превышает числа состояний автомата. Если ни одно слово из этого множества не допускается, то автомат пуст. Предположение о том, что минимальная длина допускаемого слова боль­ше числа состояний отвергается на том основании, что оно может быть
22
21
AA
MM
1
A
1
*
1
\
A
A
MVM
2
A
2
1
A
A
MM
1
2
A
A
MM
2
13
A
AA
MMM
1
24
A
AA
MMM
211
,, AAA
2
A
),),,(,,,(
3020121213
IqqRRQQVA
сведено к слову меньшей длины, путем выбрасывания участков между двумя повторяющимися в пути состояниями.
Автомат пуст, если множество состояний, достижимых из начального, не содержит в себе ни одно из заключительных состояний. Найти множе­ство состояний, достижимых из начального, можно, используя алгоритм поиска в графе (например, в ширину или в глубину).
Эквивалентность одноленточных автоматов
Автоматы A1 и A2 эквивалентны, если равны множества допускаемых ими слов, т. е.
. Проблема эквивалентности одноленточных
автоматов разрешима.
Проблему эквивалентности автоматов можно свести к проблеме пу­стоты. Пусть требуется определить, эквивалентны ли автоматы A1 и A2,
имеющие общий алфавит V. Введем автомат ством слов
. Такой автомат можно построить, заменив
с определяемым множе-
множество заключительных состояний автомата A1 на множество неза­ключительных состояний этого автомата. Аналогично определим автомат
. Автоматы A1 и A2 эквивалентны тогда и только тогда, когда
и
.
Таким образом, чтобы установить эквивалентность автоматов A1 и A2, следует проверить, пусты ли одновременно автоматы A3 и A4 такие, что
и
Автоматы A3 и A4 можно построить по автоматам
.
и
, если
допустить использование в качестве состояний не только символы, но и пары символов состояний автоматов A1 и A2. Автомат A3 имеет вид:
где q01 и q02 — начальные состояния автоматов A1 и A2; I3 — программа автомата A3, содержащая команду (q1, q2) a (q3, q4) в том и только том случае, если программа автомата A1 содержит команду q1 a q3 и про­грамма автомата A2 содержит команду q2 a q4. Аналогично строится автомат A4.
Проблема пустоты конечных одноленточных автоматов разрешима. Поэтому процедура распознавания эквивалентности автоматов сводится к
23
построению автоматов A3 и A4 и последующему анализу, являются ли оба построенных автомата пустыми.
По другому, проблему эквивалентности автоматов можно свести к проблеме эквивалентности состояний. Слово в алфавите V допускается состоянием q, если оно позволяет «связать» состоянием q с одним из за­ключительных состояний. Пусть Mq — множество всех слов, допус­каемых состоянием q. Состояния q и q' эквивалентны, если Mq = Mq'. Если два состояния неэквивалентны, то любое слово, связывающее одно из них с заключительным состоянием, а другое — с незаключительным, называется словом, различающим эти два состояния. Два состояния эк­вивалентны тогда и только тогда, когда не существует различающего их слова. Далее будем рассматривать эквивалентность состояний одного автомата или различных автоматов с одним и тем же алфавитом.
Алгоритм проверки эквивалентности двух состояний основан на следующем факте:
состояния q и q' эквивалентны тогда и только тогда, когда выполня­ются следующие два условия:
1) условие подобия — состояния q и q' должны быть либо оба
заключительными, либо оба незаключительными;
2) условие преемственности — для всех символов алфавита состояния
q и q' должны переходить в эквивалентные состояния.
В процессе выполнения алгоритма строится дерево проверки эквивалентности состояний, в вершинах которого записываются пары
состояний (в корне – пара проверяемых на эквивалентность состояний), а дуги отмечаются символами алфавита. Вершины строящегося дерева определяются как внутренние, граничные, дублирующие, конечные или различающие. Граничная — это вершина, являющаяся листом и еще не обработанная алгоритмом. После обработки эта вершина станет либо внутренней, имеющей сыновей, либо дублирующей, либо конечной, либо различающей. Дублирующая — это вершина, являющаяся листом и содержащая такую пару состояний, которая есть хотя бы в одной из внутренних вершин. Конечная — это вершина, которая содержит два одинаковых состояния. Различающая — это вершина, которая содержит заключительное и незаключительное состояние.
Алгоритм проверки эквивалентности двух состояний следующий.
1. Построить вершину — корень дерева, записать в нее пару проверяемых состояний. Если в корне одно состояние заключительное, а другое незаключительное, то пара проверяемых состояний является неэквивалентной (нарушено условие подобия),
24
3
a
Maa
4
a
Maa
конец алгоритма. В противном случае корень считать граничной вершиной и выполнить п.2.
2. Пока есть граничные вершины, обрабатывать их в порядке построения следующим образом.
Для каждого символа алфавита создать вершину, в которую провести дугу, отмеченную этим символом, из обрабатываемой вершины; в созданную вершину записать состояния переходов из состояний, записанных в обрабатываемой вершине, при обработке символа, отмечающего входящую дугу.
Если в созданной вершине одно состояние заключительное, а другое — нет, то сделать эту вершину различающей; пара проверяемых состояний является неэквивалентной, конец алгоритма.
Если в созданной вершине содержится такая пара состояний, которая есть хотя бы в одной из внутренних вершин, то сделать эту вершину дублирующей.
Если в созданной вершине содержится пара одинаковых состояний, то сделать эту вершину конечной.
В остальных случаях созданную вершину считать граничной.
Обработанные граничные вершины считать внутренними.
3. Если в множестве вершин дерева нет различающей, то пара
проверяемых состояний является эквивалентной, конец алгоритма.
Если в результате выполнения алгоритма построено дерево, в котором нет различающей вершины, то все пары состояний, записанные в вершинах дерева, являются эквивалентными. Если же в результате выполнения алгоритма построено дерево, в котором есть различающая вершина, то неэквивалентными будут все пары состояний, записанные в вершинах на пути от корня к различающей вершине (для них не выполняется условие преемственности). Слово, соответствующее пути от корня к различающей вершине, представляет собой слово, различающее проверяемые на эквивалентность состояния, причем это будет кратчайшее из различающих состояния слов, т.к. дерево проверки строится в ширину.
Пример 1. Определить, являются ли эквивалентными состояния a3 и a4 автомата A1, граф которого представлен на рис. 4.
Решение. Дерево проверки эквивалентности состояний a3 и a4 пред­ставлено на рис. 5. В нем есть различающая вершина, содержащая заклю­чительное состояние a6 и незаключительное a4, поэтому состояния a3 и a не эквивалентны. Слово aa, соответствующее пути от корня к различаю­щей вершине, различает состояния a3 и a4 (
и
4
).
25
a6
a1
a2
a3
a5
a7
a4
a a a a b b b b b b a a b
a
b a a
a3 a4
a1 a4
a5 a6
a6 a4
b
Рис. 4. Граф автомата А1
Рис. 5. Дерево проверки эквивалентности состояний a3 и a4
26
0
q
M
1
A
2
A
b1
b3
b2
b5
b4
a
a
a
a a b
b
b
b
Автомат A начинает работу в начальном состоянии q0, поэтому мно­жество допускаемых им слов МА равно множеству
слов, допускае-
мых состоянием q0. Следовательно, автоматы
и
эквивалентны, если
эквивалентны их начальные состояния. Поэтому проверка эквивалентно­сти автоматов сводится к проверке эквивалентности их начальных состо­яний.
Пример 2. Определить, являются ли эквивалентными автоматы A1 (рис. 4) и A2 (рис. 6).
Рис. 6. Граф автомата А2
Решение. Для определения эквивалентности автоматов A1 и A2 прове-
рим на эквивалентность их начальные состояния a1 и b1. Дерево проверки эквивалентности состояний a1 и b1 представлено на рис. 7. В нем нет раз­личающей вершины, поэтому состояний a1 и b1 эквивалентны, а, следова­тельно, и автоматы A1 и A2 эквивалентны.
Минимизация одноленточных автоматов
Автоматы A1 и A2 эквивалентны, но второй автомат имеет меньшее
количество состояний, чем первый. Автомат, имеющий наименьшее ко­личество состояний по отношению ко всем другим автоматам, ему экви­валентным, называется минимальным. Проблема определения минималь­ности автомата разрешима. Автомат минимален, если в нем нет состоя­ний, не достижимых из начального, и нет ни одной пары эквивалентных состояний. Состояния, недостижимые из начального, не участвуют в ра­боте автомата, поэтому их можно исключить из множества состояний, а команды, содержащие такие состояния, исключить из программы. При
27
a
a
a a a b a
a
a1 b1
a6 b2
a3 b3
a4 b4
b
a5 b5
a7 b2
a2 b1
b b b
b
b
a1 b
1
a1 b
1
a4 b
4
a6 b
2
a3 b
3
a4 b
4
a7 b
2
a3 b
3
задании автомата графом, вершины, соответствующие недостижимым состояниям, можно удалить вместе с инцидентными дугами. При таблич­ном способе задания автомата можно удалить столбцы, соответствующие недостижимым состояниям.
Рис. 7. Дерево проверки эквивалентности состояний a1 и b1
28
ji
q
M
q
M
k
q
M
k
q
M
k
q
M
ji
Пусть в автомате состояния qi и qj эквивалентны и при чтении символа x автомат из состояния qk переходит в состояние qi. Если при чтении сим-
вола x в состоянии qk выполнить переходит в состояние qj, то результат работы автомата не изменится, т. к.
. Поэтому, если в автома-
те состояния qi и qj эквивалентны, то все переходы в состояние qj мож­но заменить на переходы в состояние qi. После этого состояние qj станет недостижимым и его можно исключить. Если автомат задан графом, то вершину, соответствующую состоянию qj можно удалить вместе с выходящими дугами, а дуги, идущие в состояние qj, перенаправить в состояние qi. Если автомат задан таблицей, то столбец, соответствующий состоянию qj можно удалить, а состояние qj в клетках таблицы заменить на состояние qi.
Для получения минимального автомата (минимизации автомата) можно использовать следующий алгоритм.
1. Пока в автомате есть хотя бы одна пара эквивалентных состояний,
исключить одно из состояний пары описанным выше способом.
2. Исключить все состояния, недостижимые из начального. Для поиска множества недостижимых состояний можно найти множество достижи­мых состояний, используя алгоритм поиска в графе (например, в глубину или в ширину), и вычесть его из множества состояний автомата.
Для минимизации автомата можно использовать и другой алгоритм, основанный на разбиении множества состояний на классы эквивалентных состояний и замене каждого класса одним состоянием (объединении класса эквивалентных состояний в одно состояние).
Для разбиения множества состояний на классы эквивалентных состо­яний используется понятие k-эквивалентных состояний. Определим мно-
жество
как множество всех слов длины k, допускаемых состоянием
q. Состояния qi и qj называются k-эквивалентными, если
Множество всех k-эквивалентных между собой состояний образует класс k-эквивалентных состояний. Для нахождения разбиения множества со-
стояний на классы эквивалентных состояний последовательно определя­ются разбиения на классы 0-, 1-, …, k-эквивалентных состояний. Процесс заканчивается, когда на некотором шаге классы k-эквивалентных состоя­ний совпадут с классами (k – 1)-эквивалентных состояний. В этот момент разбиение на классы k-эквивалентных состояний будет представлять со­бой разбиение на классы эквивалентных состояний.
Два состояния автомата являются 0-эквивалентными в том случае, ес-
ли они оба заключительные или оба незаключительные. Таким образом,
.
29
0
K
},{
201
00
KKK
},,,{
4321
1 0
aaaaK
},,{
765
2
0
aaaK
1
K
1 0
K
2
0
K
a1
a2
a3
a4
a5
a6
a7
a
2
0
K
2
0
K
1 0
K
1 0
K
2
0
K
1 0
K
1 0
K
b
1 0
K
1 0
K
2
0
K
2
0
K
1 0
K
1 0
K
1 0
K
1 0
K
1
1
K
2
0
K
1 0
K
разбиение на классы 0-эквивалентных состояний представляет собой два множества — множество всех заключительных состояний и множество всех незаключительных состояний автомата.
Состояния qi и qj будут k-эквивалентными, если они (k – 1)-эквива­лентны и состояния qi' = δ (qi, x) и qj' = δ (qj, x) так же (k – 1)-эквива- лентны для всех x из алфавита автомата (состояния qi' и qj' принадлежат одному и тому же классу (k – 1)-эквивалентных состояний).
Процесс нахождения разбиения на классы эквивалентных состояний можно представить построением таблиц переходов из состояний в классы k-эквивалентных состояний. Найдем разбиение на классы эквивалентных состояний множества состояний автомата A1, граф которого представлен на рис. 4. Разбиение
на классы 0-эквивалентных состояний представ-
ляет собой ключительных состояний и
ных состояний. Для определения разбиения
, где
— множество неза-
— множество заключитель-
на классы 1-
эквивалентных состояний строим таблицу переходов из состояний в клас­сы 0-эквивалентных состояний (табл. 1), в клетках которой вместо состо­яния перехода записывается класс 0-эквивалентных состояний, которому принадлежит состояние перехода.
Таблица 1
Таблица переходов в классы 0-эквивалентных состояний
Состояния, принадлежащие одному и тому же классу 0­эквивалентных состояний и имеющие в таблице переходов в классы 0­эквивалентных состояний одинаковые столбцы, объединяются в класс 1­эквивалентных состояний. По таблице 1 видим, что состояния a1 и a2 из
класса
образуют класс
= {a
, a
} 1-эквивалентных состояний. В
1
2
этот класс не входит состояние a5, которому соответствует такой же стол­бец в таблице 1, как для состояний a1 и a2, потому, что a5 принадлежит
классу
определяем остальные классы 1-эквивалентных состояний:
, а состояния a
и a2 принадлежат классу
1
. Аналогично
30
2
1
K
3
1
K
4
1
K
1
1
K
2
1
K
3
1
K
4
1
K
a1
a2
a3
a4
a5
a6
a7
a
4
1
K
4
1
K
1
1
K
2
1
K
4
1
K
2
1
K
2
1
K
b
2
1
K
2
1
K
3
1
K
4
1
K
2
1
K
1
1
K
1
1
K
1 2
K
2
2
K
3
2
K
4
2
K
5
2
K
1 2
K
2
2
K
3
2
K
4
2
K
5
2
K
a1
a2
a3
a4
a5
a6
a7
a
5
2
K
5
2
K
1 2
K
3
2
K
5
2
K
3
2
K
3
2
K
b
2
2
K
2
2
K
4
2
K
5
2
K
2
2
K
1 2
K
1 2
K
1 3
K
2
3
K
3
3
K
4
3
K
5
3
K
i
K
2
= {a
, a
},
3
= {a5} и
4
= {a
, a
}.
6
7
Классы 1-эквивалентных состояний отличаются от классов 0-эквива­лентных состояний, поэтому определяем классы 2-эквивалентных состоя-
ний. Для этого строим таблицу переходов из состояний в классы 1-
эквивалентных состояний (табл. 2)
Таблица 2
Таблица переходов в классы 1-эквивалентных состояний
По таблице находим классы 2-эквивалентных состояний:
= {a
, a
},
1
= {a3},
2
= {a4},
= {a5} и
= {a
, a
}.
6
7
Классы 2-эквивалентных состояний отличаются от классов 1-эквива­лентных состояний, поэтому строим таблицу переходов из состояний в классы 2-эквивалентных состояний (табл. 3) для определения классов 3-
эквивалентных состояний.
Таблица 3
Таблица переходов в классы 2-эквивалентных состояний
По таблице находим классы 3-эквивалентных состояний:
= {a
, a
},
1
= {a3},
2
= {a4},
= {a5} и
= {a
, a
}.
6
7
Классы 3-эквивалентных состояний не отличаются от классов 2-эквива­лентных состояний, поэтому классы 3-эквивалентных состояний пред­ставляют собой классы эквивалентных состояний.
Теперь, для уменьшения количества состояний, «объединим» состоя­ния каждого класса эквивалентных состояний в одно состояние. Для это­го класс эквивалентных состояний будем считать состоянием автомата.
Обозначим класс
состоянием bi и выполним соответствующую заме-
ну в таблице 3, исключим в ней исходные состояния и в каждом классе
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]