- •Введение
- •1. Алгоритмы сортировки
- •1.1. Общие положения
- •1.2. Сортировка простыми включениями
- •Словесное описание алгоритма
- •1.3. Сортировка простым выбором
- •1.4. Сортировка простым обменом
- •1.5. Задания для самостоятельной работы
- •2. Алгоритмы покрытия
- •2.1. Постановка задачи покрытия
- •2. 2. Алгоритм полного перебора
- •2. 3. Алгоритм граничного перебора по вогнутому множеству
- •2.4. Алгоритмы, использующие сокращение таблицы покрытий
- •1. Для случая построения одного кратчайшего покрытия
- •2. В случае построения минимального покрытия
- •3. При условии построения всех безызбыточных покрытий
- •2.5. Алгоритм приближенного решения задачи о покрытии
- •2.6. Задачи для самостоятельной работы
- •3. Алгоритмы на графах
- •3.1. Общие положения
- •3.2. Алгоритмы нахождения оптимального пути
- •Волновой алгоритм построения кратчайшего пути для взвешенного графа
- •Волновой алгоритм построения длиннейшего пути во взвешенном графе
- •3.3. Нахождение компонент связности
- •Алгоритм построения компонент связности в неориентированном графе
- •Пример 3.5
- •3.4. Алгоритмы нахождения подграфов
- •3.5. Дерево. Остов
- •Пример 3.7.
- •Алгоритм построения произвольного остова
- •Алгоритм построения минимального остова
- •Алгоритм построения системы независимых циклов графа
- •Пример 3.12.
- •3.6. Алгоритм кратчайшей раскраски графа
- •3.7. Задачи для самостоятельной работы
- •4. Конечные автоматы
- •4.1. Общие положения
- •4.2. Представление автомата
- •4.3. Взаимные преобразования автоматов
- •4.4. Определение реакции автомата на входное слово
- •4.5. Задания для самостоятельной работы
- •5. Машины тьюринга
- •5.1. Общие положения
- •5.2. Операции над машинами Тьюринга
- •6. Структуры данных
- •6.1. Списки
- •6.2. Двусвязный список
- •6.3. Кольцевой список
- •6.4. Стек
- •6.5. Очередь
- •6.6. Задания для самостоятельной работы
- •Литература
4. Конечные автоматы
Цель данного занятия - освоить язык описания конечных автоматов и приобрести навыки в их анализе и взаимном преобразовании.
4.1. Общие положения
Конечный автомат [1] - это набор из пяти элементов ,
где алфавит внутренних состояний;
входной алфавит (алфавит входных символов);
выходной алфавит (алфавит выходных символов);
функция переходов из состояния в состояние;
функция выходов.
В теории автоматов наиболее часто рассматриваются автоматы Мили и Мура, у которых функции переходов имеют одинаковый вид (), а функции выходов существенно различны (для автомата Мили идля автомата Мура), что определяет разное поведение автоматов. При этом решают задачи анализа и синтеза автоматов, их взаимных преобразований, установление эквивалентности автоматов и др.
4.2. Представление автомата
Для описания работы автомата чаще всего используют таблицы и графы переходов. В табл. 4.1 приведен пример представления автомата Мили, а в табл. 4.2 автомата Мура.
Таблица 4.1
-
...
...
...
...
...
...
...
Таблица 4.2
-
...
...
...
...
...
...
...
Автомат называется полностью определённым, если множество пар для функций перехода и выхода равны множеству пар . У частично определённого автомата функции и определены на множестве не всех пар ; в этом случае некоторые клетки не заполнены.
Граф переходов строится следующим образом. Две вершины и(исходное состояние и состояние перехода) соединяются дугой, направленной отк, если в автомате имеется переход изв(если). Для автомата Мили дуге () приписывается входной символи выходной. Для автомата Мура входной символзаписывается внутри вершины или рядом с ней, а дуге приписывается только входной символ .
Пример 4.1. Автомат Мили A1 задан таблично (табл. 4.3) и графически (рис. 4.1).
S1 S2 S3
РРис. 4.1. Граф автомата А1
Пример 4.2. Автомат Мура A2 задан таблично (табл. 4.4) и графически (рис. 4.2).
Рис. 4.2. Граф автомата А2
4.3. Взаимные преобразования автоматов
Одной из основных задач, решаемых в теории автоматов, является задача эквивалентного преобразования автомата Мили в автомат Мура либо наоборот [4].
Рассмотрим связь между автоматами Мили и Мура. Два автомата ис одинаковыми входными и выходными алфавитами называютсяэквивалентными, если после установления их в начальной состояния их реакции на любое входное слово совпадают. Для любого автомата Мили может быть построен эквивалентный ему автомат Мура и наоборот.
Преобразование автоматов связано с преобразованием их состоя-ний. На рис. 4.3 представлены преобразования для обоих случаев преобразования автоматов. Видно, что в случае а символы выхода на графе автомата Мура приписываются дуге на графе автомата Мили; в случае б в вершину sm автомата Мура нельзя поместить несколько сим-волов выхода с дуг автомата Мили, поэтому такое состояние надо "расщеплять":
Sm=(S'm, S"m), где S'm=(sm, yn) S"m=(sm, yp).
Аналогично поступают и при преобразованиях на таблицах.
Рис. 4.3. Преобразования автоматов (их состояний):
а) автомата Мура в автомат Мили; б) автомата Мили в автомат Мура
Пример 4.3. Рассмотрим преобразование автомата Мили АА, заданного табл. 4.3 (графом на рис. 4.1) и алфавитами: ,,, в автомат Мура АВ. Для автомата АВ определим множество его состояний SB и функцию выхода; этой информации достаточно для описания автомата АВ.
Состояние расщепляется в два состояния: и(обратите внимание на дуги, входящие в вершину, отождествляющую состояниеS1 и выходные буквы на них ). Для удобства переобозначим их соответственно:и. Аналогично поступим и с другими состояниями. В результате получим:
Функции выхода автомата АВ определяются выражениями
Согласно схеме б (рис. 4.3) получим следующие переходы:
-из и переход в состояние ;
-из и переход в состояние ;
-из переход в состояние ;
-из переход в состояние ;
-из и переход в состояние;
-из и переход в состояние;
Табличное и графическое представления полученного автомата Мура АВ приведены в табл. 4.5 и на рис. 4.4.
Таблица 4.5
/y1 | ||
/y2 | ||
/y1 | ||
/y1 | ||
/y2 |
Рис. 4.4. Граф автомата Мура АВ
Пример 4.4. Рассмотрим преобразование автомата Мура А2, задан-ный табл. 4.4, в автомат Мили A'2. Поскольку оно простое, приведём готовый результат (табл. 4.6); граф можно построить самостоятельно.
Таблица 4.6