- •Оглавление
- •Глава 1. Алгебраические системы 17
- •Глава 2. Элементы комбинаторики 88
- •Глава 3. Основы теории графов 101
- •Глава 4. Основы математической логики 169
- •4.1.1.4. Эквивалентные преобразования формул 179
- •4.1.4. Выполнить подстановку: 247
- •Глава 5. Основы теории алгоритмов 252
- •Глава 6. Конечные автоматы 289
- •Введение
- •Глава 1. Алгебраические системы
- •1.1 Множества
- •1.1.1. Четкие множества
- •1.1.2. Нечеткие множества
- •1.2. Соответствия, отображения и функции
- •1.2.1. Четкие отображения и функции
- •1.2.2. Нечеткие отображения
- •1.3. Отношение
- •1.3.1. Четкие отношения
- •1.3.2. Нечеткое отношение
- •1.4. Элементы общей алгебры
- •1.5. Булева алгебра
- •1.5.1. Булевы операции
- •1.5.2. Законы булевой алгебры
- •1.5.3. Формула булевой функции
- •1.5.4. Описание булевой функции
- •1.5.5. Суперпозиция булевых функций
- •1.5.6. Свойства булевых функций
- •1.5.6.1. Самодвойственные булевы функции
- •1.5.6.2. Монотонные булевы функции
- •1.5.6.3. Линейные булевы функции
- •1.5.6.4. Функции, сохраняющие “0”
- •1.5.6.5. Функции, сохраняющие “1”
- •1.5.6.6. Функционально полные системы
- •1.5.7. Разложение булевых функции
- •1.5.7.1. Днф булевой функции
- •1.5.7.2. Кнф булевой функции
- •Алгоритм преобразования формулы к скнф:
- •1.5.8. Минимизация булевых функций.
- •1.5.8.1.Минимизация днф булевой функции
- •1.5.8.2. Минимизация кнф булевой функции
- •1.6. Алгебра четких множеств
- •1.6.1. Операции над множествами
- •1.6.2. Законы алгебры множеств
- •1.6.3. Эквивалентные преобразования формул
- •1.6.4. Композиция отображений и отношений
- •1.6.5. Поиск неизвестного множества
- •1.7. Алгебра нечетких множеств
- •1.7.1. Операции над нечеткими множествами
- •1.7.2. Композиция нечетких отображений
- •1.7.3. Композиция нечетких отношений
- •1.7.4. Свойства нечетких отношений
- •Вопросы и задачи
- •Глава 2. Элементы комбинаторики
- •2.1. Размещение из n элементов по k
- •2.2. Перестановка элементов
- •2.3 Сочетание из n элементов по k
- •2.4. Разбиение множества
- •2. 5 Правила комбинаторики
- •Вопросы и задачи
- •Глава 3. Основы теории графов
- •3.1. Граф и его характеристики
- •3.2. Описание графа
- •3. 3. Числа графа
- •3.4. Операции над графами
- •3.4.1. Унарные операции
- •3.4.1.1 Поиск дополнительного графа
- •3.4.1.2. Введение и удаление вершин графа
- •3.4.1.3. Стягивание вершин графа
- •3.4.1.4. Введение и удаление ребер графа
- •3.4.1.5. Поиск плотности и неплотности графа
- •3.4.1.6. Поиск числа компонент связности графа
- •3.4.1.7. Поиск устойчивости графа
- •3.4.1.8. Поиск цикломатического числа графа
- •3.4.1.9. Поиск хроматического числа графа
- •3.4.2. Бинарные операции
- •3.4.2.1. Объединение графов
- •3.4.2.2. Пересечение графов
- •3.4.2.3. Композиция графов
- •3.4.2.4. Соединение графов
- •3.4.2.5. Прямое произведение графов
- •3.4.2.6. Изоморфизм графов
- •3.5. Некоторые алгоритмы на графах
- •3.5.1. Построение покрывающего остова
- •3.5.2. Построение остова минимального веса
- •3.5.3. Поиск кратчайших путей в сети.
- •3.5.4. Поиск максимального потока в сети
- •3.5.5. Метод критического пути в управлении
- •3.6. Нечеткие графы
- •Вопросы и задачи
- •Глава 4. Основы математической логики
- •4.1. Логика высказываний
- •4.1.1. Алгебра высказываний
- •4.1.1.1. Логические операции
- •4.1.1.2. Правила записи сложных формул.
- •4.1.1.3. Законы алгебры высказываний
- •4.1.1.4. Эквивалентные преобразования формул
- •4.1.1.5. Нормальные формы формул
- •4.1.2. Исчисление высказываний
- •4.1.2.1. Интерпретация формул
- •4.1.2.2. Аксиомы и правила введения и удаления логических связок
- •4.1.2.3. Метод дедуктивного вывода
- •4.1.2.4. Принцип резолюции
- •4. 2. Логика предикатов
- •4.2.1. Алгебра предикатов
- •4.2.1.1. Законы алгебры предикатов
- •4.2.1.2. Предваренная нормальная форма формулы
- •4.2.1.3 Сколемовская стандартная форма формулы
- •4. 2. 2. Исчисление предикатов
- •4.2.2.1. Правила подстановки
- •4.2.2.2. Правила введения и удаления кванторов
- •4.2.2.3. Правила заключения
- •4.2.2.4. Метод дедуктивного вывода
- •4.2.2.5. Принцип резолюции
- •4.2.2.6. Логическое программирование
- •4.3. Логика реляционная
- •4.3.1 Реляционная алгебра
- •4.3.1.1. Унарные операции
- •4.3.1.2. Бинарные операции
- •4.3.1.3. Правила реляционной алгебры
- •4.3.2. Реляционное исчисление
- •4.3.3. Языки реляционной логики
- •4.4. Нечеткая логика
- •4.4.1. Нечеткое исчисление
- •4.4.2. Экспертные системы
- •Вопросы и задачи
- •Глава 5. Основы теории алгоритмов
- •5.1. Рекурсивные функции
- •5.1.1. Базовые функции
- •5.1.2. Элементарные операции
- •5.2. Машина Тьюринга
- •5.2.1. Описание машины Тьюринга
- •5.2.2. Примеры машин Тьюринга
- •5.2.3. Композиция машин Тьюринга
- •5.3. Нормальные алгоритмы Маркова
- •5.4 Сложность вычислений
- •Вопросы и задачи
- •Глава 6. Конечные автоматы
- •6.1. Абстрактный автомат
- •6.1.1. Типы конечных автоматов
- •6.1.2. Описание автоматов
- •6.1.3. Автоматное моделирование алгоритмов
- •6.1.3.1. Автомат Мили - модель управляющего автомата
- •6.1.3.2. Автомат Мура - модель управляющего автомата
- •6.1.3.3. Микропрограммный автомат
- •6.1.4. Эквивалентность автоматов
- •6.1.5. Эквивалентность внутренних состояний автомата
- •6.1.5.1. Детерминированный автомат
- •6.1.5.2. Недетерминированный автомат
- •6.2. Структурный автомат
- •6.2.1. Произведение автоматов
- •6.2.1.1. Последовательное соединение автоматов
- •6.2.1.2. Параллельное соединение автоматов
- •Обратная связь автоматов
- •6.2.3. Сумма автоматов
- •6.2.4. Структурный автомат и кодирование
- •6.3. Логическое проектирование автоматов
- •6.3.1. Кодирование алфавитов автомата
- •6.3.2. Автоматы без “памяти”.
- •6.3.2.1. Формирование оператора
- •6.3.2.2. Формирование системы операторов
- •Логическая схема комбинационного автомата
- •6.3.3. Автоматы с “памятью”
- •6.3.3.1. Формирование оператора
- •6.3.3.2. Формирование оператора
- •.3.3.3. Логическая схема автомата с “памятью”
- •Вопросы и задачи
- •Литература
- •Предметный указатель
6.1.3. Автоматное моделирование алгоритмов
Для наглядного представления алгоритма используют блок-схемы в виде ориентированного графа. Основными элементами такого графа являются блоки "операторы" и "предикаты" и дуги, указывающие возможные пути на графе. Кроме того, есть единственный блок "начало", из которого исходит единственная дуга и единственный блок "конец", из которого не исходит ни одна дуга (см. рис 6.7).
Каждый шаг алгоритмического процесса - это этап в обработке информации блоками "оператор" или "предикат" и передача результатов в очередной блок.
В блоке "оператор" выполняются функциональные преобразования информации (например, арифметические операции, хранение или передача информации) и результаты передаются по единственной дуге на выход.
В блоке "предикат" проверяются условия (например, арифметические или логические) и результаты передаются по одной из двух дуг выхода: "да" или "нет", что определяет выбор пути на графе алгоритма.
Рис. 6.7.. Компоненты блок-схемы алгоритма.
Важной особенностью блок-схемы является то, что связи, которые она описывает, не зависят от сложности операции.
Для автоматного моделирования необходимо рассматривать раздельно процессы обработки информации и выбора маршрута на графе алгоритма. Для решения первой задачи создают операционный автомат, а для решения второй - управляющий.
Автоматное моделирование процесса обработки информации можно рассматривать на макроуровне, когда каждый блок "оператор" представляет собой самостоятельный алгоритм, и на микроуровне, когда каждый блок "оператор" представляет элементарную операцию. Первый подход нашел применение в проектировании дискретных устройств, работающих в асинхронном режиме, второй - в проектированию вычислительных комплексов, работающих в синхронном режиме.
Схема взаимодействия операционного и управляющего автоматов показана на рис. 6.8.
Рис. 6.8. Операционный и управляющий автоматы.
В дискретные моменты времени по каналу 1 на вход операционного автомата поступает обрабатываемая информация, а по каналу 2 снимают результаты ее обработки. По каналу 3 в управляющий автомат поступает сообщение об исполнении шага алгоритма и о результатах проверки условий, а по каналу 4 в операционный автомат - управляющее воздействие для исполнения очередного шага алгоритма. По каналу 5 в управляющий автомат поступает команда для исполнения оператора, а по каналу 6 - сообщение об его исполнении.
Для моделирования управляющего автомата необходимо выполнить разметку блок-схемы алгоритма, определить множество входных сигналов и внутренних состояний, найти правила формирования выходных сигналов и переходов внутренних состояний. Ниже рассмотрены автоматные модели управляющего автомата на безе автоматов Мили и Мура.
6.1.3.1. Автомат Мили - модель управляющего автомата
Для формирования автоматной модели алгоритма необходимо:
1) все блоки "оператор" пометить символами yi; управляющий автомат по сигналу “1” формирует команду на исполнение yi -ой операции операционным автоматом; операционный автомат после исполнения команды формирует сигнал "1" для управляющего автомата;
2) все блоки "предикат" пометить символами pi; операционный автомат проверяет pi-е условие и формирует сигналы “p” или “p” для управляющего автомата;
3) выход блока "начало" пометить символом q0; управляющий автомат до команды “старт” (символ "1") находится в состоянии q0;
4) выход блока "конец" пометить символом qk=q0 (управляющий автомат переводится в начальное состояние); после исполнения алгоритма на управляющий автомат подается команда “стоп” (символ "0");
На рис. 6.9. выполнена разметка для автомата Мили некоторых типовых блок-схем алгоритмов.
Согласно вышеприведенным правилам для каждой блок-схемы можно выделить множества входных и выходных сигналов управляющего автомата и его внутренних состояний:
a) X={0; 1; p; p-}; Y={y1; 0}; Q={q0; q1};
b) X={0; 1; p; p -}; Y={y1; y2; 0}; Q={q0; q1; q2};
c) X={0; 1; p-1; p1.p2; p1.p-2}; Y={y1; 0}; Q={q0; q1};
d) X={0;1; p1; p1.p2; p1.p-2}; Y={y1; y2; 0}; Q={q0; q1; q2}.
Поведение управляющих автоматов показано в таблице 6.11.
Таблица 6.11
a) |
|
b) |
||||||||||||||
текущее состояние |
входные символы |
|
текущее состояние |
входные символы |
||||||||||||
1 |
p |
p- |
1 |
p |
p- |
|||||||||||
q0 |
q1/ y1 |
— |
— |
|
q0 |
— |
q1/ y1 |
q2/ y2 |
||||||||
q1 |
— |
q0/ 0 |
q1/ y1 |
|
q1 |
q0/ 0 |
— |
— |
||||||||
|
|
|
|
|
q2 |
q0/ 0 |
— |
— |
||||||||
c) |
|
d) |
||||||||||||||
текущее состояние |
входные символы |
|
текущее состояние |
входные символы |
||||||||||||
1 |
p-1 |
p1.p2 |
p1.p-2 |
1 |
p1 |
p-1.p2 |
p-1.p-2 |
|||||||||
q0 |
q1/ y1 |
— |
— |
— |
|
q0 |
— |
q1/ y1 |
q2/ y2 |
q0/ 0 |
||||||
q1 |
— |
q1/ y1 |
q0/ 0 |
q1/ y1 |
|
q1 |
q0/ 0 |
— |
— |
— |
||||||
|
|
|
|
|
|
q2 |
q0/ 0 |
— |
— |
— |
Пример: дана блок-схема алгоритма. Найти таблицу поведения управляющего автомата Мили.
Множества входных и выходных сигналов управляющего автомата и его внутренних состояний:
X={0; 1; p-; p1.p2; p1.p-2; (p3.p4p-3.p5); (p3.p-4p-3.p-5)}; Y={y1; y2; y3; y4};
Q=(q0; q1; q2; q3; q4}.
На входе оператора 2 действуют два сигнала: от выхода оператора 1 сигнал (p1p2) или от выхода оператора 3 сигнал
(p3.p-4 p-3.p-5). Также переход в заключительное состояние возможно от оператора 4 по сигналу “1” или от оператора 3 по сигналу (p3.p-4 p-3.p-5). Введем обозначения k1=(p3.p4 p-3.p5), k2=(p3.p-4 p-3.p-5).
Поведение управляющего автомата представлено в таблице 6.12.
Таблица 6.12
-
текущие состояния
входные символы
1
p-1
p1.p2
p1.p-2
k1
k2
q0
q1/ y1
—
—
—
—
—
q1
—
q1/ 1
q2/ y2
q4/ y4
—
—
q2
q3/ y3
—
—
—
—
—
q3
—
—
—
—
q0/ 0
q2/ y2
q4
q0/ 0
—
—
—
—
—