- •Оглавление
- •Глава 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. Логическая схема автомата с “памятью”
- •Вопросы и задачи
- •Литература
- •Предметный указатель
1.2. Соответствия, отображения и функции
Если по какому-то правилу для элементов множества A ставят в соответствие один или несколько элементов множества B, то формируют упорядоченные пары или кортежи (x, y), множество которых называют соответствием или отображением.
Соответствия или отображения, как и множества, могут быть четкими и нечеткими. Так каждому символу клавиатуры компъютера соответствует определенная кодовая комбинация, но фоторобот недостаточно четко соответствует какому-то лицу.
1.2.1. Четкие отображения и функции
Если некоторым элементам множества А соответствуют некоторые элементы множества В, то множество упорядоченных пар формирует подмножество прямого произведения множеств А и В,
т. е. {(x, y)| xA и yB}(АВ). Множество A называют областью отправления, а множество B - областью прибытия.
На рис. 1.1 показаны области отправления A={a, b, c, d, e, f} и прибытия – B={1, 2, 3, 4, 5, 6}.
Проекция на первую компоненту пары {1(x, y)} формирует область определения A0={a, b, c, d, f} A, а на вторую {2(x, y)} - область значений B0={1, 2, 4, 5, 6} B. Элемент yjB0 есть образ элемента хiA0, а элемент хiA0 - прообраз элемента yjB0.
Если хотя бы для одного элемента хiA0 существует несколько образов, то {(x, y)|xA,yB} (AB) называют соответствием.
Например, на рис. 1.1. представлено соответствие, т. к. есть
(c, 1), (c, 6), (d, 4), (d, 5).
Соответствие - это, как правило, двуязычные словари, когда словам одного языка (множество А), как правило, соответствуют несколько слов другого языка (множество В). Например, capacity – способность, мощность, емкость, array – массив, таблица, расположение, scanner - лексический анализатор, устройство для ввода изображений и т. д.
Если для каждого элемента хiA0 существует единственный образ, то такое множество упорядоченных пар называют отображением.
Например, в компьютере каждая буква, цифра или символ отображаются в уникальную 8-битовую кодовую комбинацию: “F”:=01000110,.. “s”:=01110011,.. ”Ф”:=11000100,.. “я”:=11001111,.. “5”:=00110101,.. “+”:=00101011,.. “”:=00100110,.. “{“:=01111011 и т.д.
Единственное отображение принято обозначать t=(x, y), а их множество h={(x, y)|xA, yB}(AB).
Если область определения задана на нескольких множествах Хi, то каждое отображение есть кортеж t=(x1, x2,..,xn, y), а их множество
h={(x1, x2, ..,xn, y)| xiXi, yY}((X1X2..Xn)Y).
В этом случае yjY0 является образом для (x1i, x2i,..,xni)(X1X2..Xn), а (x1i, x2i,..,xni)(X1X2..Xn) - прообразом для yjY0.
Если X1=X2=..=Xn=X, то h={(x1, x2,..,xn, y)| xiX, yY}(XnY).
Отображение удобно представлять в операторной форме:
h: XnY,
где h -оператор отображения.
Отображение логически совпадает с понятием функция
f=(x, y) или f=(x1, x2,..,xn, y). В этом случае элементы х и (x1, x2,..,xn) называют аргументами, а y –значением функции y=f(x) или y=f(x1, x2,..,xn).
Например, f+=(x1, x2, y) есть y=x1+x2 или fsg=(x, y) есть y=sg(x).
Множество, связывающее значения аргументов и значения функции, называют графиком функции.
Мощность отображения не больше мощности прямого произведения, т.е.
|h||X1|*|X2|*..*|Xn|*|Y|.
Каждому отображению h может быть найдено обратное отображение: h-1: YXn или h-1={(y, x1, x2,..xn)| xiX, yY}(YXn).
Обратное отображение удобно применять при формировании таблиц реляционных баз данных (см. табл.1.3), когда в “шапке” указывают для каждого столбца имя соответствующей атрибута - Iy, Ix1, Ix2,..Ixn, а в “теле” записывают их значения.
таблица
1.3
h-1
Iy
Ix1
Ix2
...
Ixn
y1
x11
x12
...
x1n
y2
x21
x22
...
x2n
...
...
...
...
ym
xm1
xm2
...
xmn
В таблице 1.4 дан фрагмент “Журнала заказов..”. В первом столбце приведен уникальный код заказа (Iy), а в остальных указаны атрибуты клиента.
таблица 1.4.
-
Код
Клиент
Дата
Город
Индекс
10326
Bolido Comidas preparadas
10-ноя
Мадрид
28023
10837
Berglunds snabbkop
16-фев
Лулео
S-958 22
10853
Blauer Delikatessen
27-фев
Мангейм
68306
10876
Antonio Moreno Taqueria
28-фев
Мехико
05023
11011
Alfreds Futterkiste
09-май
Берлин
12209
...
...
...
...
...
Функция, принимающая значение на двухэлементном множестве {“истина”, “ложь”} или {1, 0}, называется предикатом. В тексте ее обозначают Р(х) или Р(x1, x2,..,xn).
Например, если на множестве целых чисел задать предикаты: Р1(х):-”x - простое число”, Р2(xi, xj):- ”xi и xj имеют общий делитель”, Р3(f+(xi, xj), xk):- ”xk ,больше суммы xi и хj”, то для x1=3, х2=4 и х3=8 имеем Р1(3)=“истина”, Р1(4)=“ложь”, Р1(8)=“ложь”, Р2(3, 4)=“ложь”, Р2(3, 8)=“ложь”, Р2(4, 8)=“истина”, Р3(f+(3, 4), 8)=“истина”;
Значения предикатов удобно описывать двухмерными таблицами, каждая клетка которых содержит “1”, если выполняется логическое условие, и “0” в противном случае. Например, для Р2(xi, xj) см. таблицу 1.5.
-
таблица 1.5.
Р2(xi, xj)
1
2
3
4
5
6
7
8
9
10
1
1
1
1
1
1
1
1
1
1
1
2
1
1
0
1
0
1
0
1
0
1
3
1
0
1
0
0
1
0
0
1
0
4
1
1
0
1
0
1
0
1
0
1
5
1
0
0
0
1
0
0
0
0
1
6
1
1
1
1
0
1
0
1
1
1
7
1
0
0
0
0
0
1
0
0
0
8
1
1
0
1
0
1
0
1
0
1
9
1
0
1
0
0
1
0
0
1
0
10
1
1
0
1
1
1
0
1
0
1
Если даны два отображения h1 и h2, то в результате присоединения справа к каждому кортежу первого отображения каждого кортежа второго отображения формируются кортежи нового отображения h, как результат прямого произведения h1 и h2, т. е.
h=(h1h2)={(y1;x11;x21;...xn1;y2;x12;x22;...xn2)|y(Y1Y2), xi1X1; xi2X2}.
Операторная запись прямого произведения имеет вид:
h:=product(h1, h2)
Число строк формируемого отображения равно произведению числа кортежей первого и второго отображений, а его ранг равен сумме рангов первого и второго отображений.