Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теория вычислительных процессов. Лабораторный практикум. Учебное пособие
.pdf
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, исключим в ней исходные состояния и в каждом классе
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
