- •Оглавление
- •Глава 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. Логическая схема автомата с “памятью”
- •Вопросы и задачи
- •Литература
- •Предметный указатель
4.3.1.2. Бинарные операции
Все множество бинарных операторов удобно разбить на два подмножества: основные и дополнительные. Основные - это объединения, разности и прямого произведения, а дополнительные - пересечения, соединения и деления.
Оператор объединения (r1, r2) двух отношений, имеющих одинаковые схемы, формирует новое отношение r’,
r1r2 |
A1 |
A2 |
A3 |
|
объединяя все кортежи первого и второго отношений. При этом одинаковые кортежи отношений по правилу идемпотентности "сливаются” в один кортеж. Например, r’={t’ t’=t1 r1 или t’=t2 r2, rel(r’)=rel(r1)=rel(r2)}. В нотации компьютерных языков это: r’= UNION(r1, r2). |
|
a1 |
b1 |
1 |
||
|
a2 |
b2 |
3 |
||
|
a3 |
b3 |
2 |
||
|
a4 |
b1 |
3 |
||
|
a2 |
b3 |
1 |
||
|
a2 |
b4 |
2 |
||
|
a1 |
b2 |
3 |
Оператор прямого произведения (r1, r2) формирует из двух отношений арности n1 и n2 новое отношение r’ арности (n1+n2).
При этом первые n1 компонентов кортежа отношения r’ образованы отношением r1 , а последние n2 - отношением r2. В результате формируется множество кортежей: r`={t`=<t1,t2> t1r1; t2r2; rel(r’)=<rel(r1)rel(r2)>}. В нотации компьютерных языков это: PRODUCT(r1, r2). Для таблицы r’ число строк равно произведению числа строк таблиц r1 и r2, т.е. |r’|=|r1|*|r2|, а число столбцов равно сумме числа столбцов таблиц r1 и r2, т.е. rel(r’)=<rel(r1)rel(r2)>. Справа приведена таблица для (r1r4).
|
|
r1r4 |
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
|
a1 |
b1 |
1 |
c2 |
d3 |
1 |
||
|
a1 |
b1 |
1 |
c1 |
d1 |
2 |
||
|
a1 |
b1 |
1 |
c2 |
d2 |
3 |
||
|
a1 |
b1 |
1 |
c3 |
d3 |
2 |
||
|
a2 |
b2 |
3 |
c2 |
d3 |
1 |
||
|
a2 |
b2 |
3 |
c1 |
d1 |
2 |
||
|
a2 |
b2 |
3 |
c2 |
d2 |
3 |
||
|
a2 |
b2 |
3 |
c3 |
d3 |
2 |
||
|
a3 |
b3 |
2 |
c2 |
d3 |
1 |
||
|
a3 |
b3 |
2 |
c1 |
d1 |
2 |
||
|
a3 |
b3 |
2 |
c2 |
d2 |
3 |
||
|
a3 |
b3 |
2 |
c3 |
d3 |
2 |
||
|
a4 |
b1 |
3 |
c2 |
d3 |
1 |
||
|
a4 |
b1 |
3 |
c1 |
d1 |
2 |
||
|
a4 |
b1 |
3 |
c2 |
d2 |
3 |
||
|
a4 |
b1 |
3 |
c3 |
d3 |
2 |
Оператор разности \(r1, r2) двух отношений, имеющих одинаковые схемы, формирует новое отношение r’, выбирая из первого отношения только те кортежи, которых нет во втором отношении.
В результате выполнения этой операции формируется множество кортежей по правилу: r’={t’ t = t1 r1 и t1r2, rel(r1)=rel(r2)}.
В нотации компьютерных языков это: MINUS(r1, r2) или DIFFERENCE(r1, r2).
|
r1\ r2 |
A1 |
A2 |
A3 |
|
a2 |
b2 |
3 |
|
|
a3 |
b3 |
2 |
|
|
a4 |
b1 |
3 |
Оператор пересечения (r1, r2), имеющих одинаковые схемы, формирует новое отношение из кортежей первого и второго отношений, имеющих одинаковые значения всех одноименных атрибутов.
В результате выполнения этой операции:
r`= {t’ t’=t1r1 и t’=t2r2 , rel(r1)=rel(r2)}.
В нотации компьютерных языков оператор пересечения записывают так:
r’=INTERSECT(r1, r2).
Операция пересечения может быть реализована оператором разности: r1r2=r1\(r1\r2).
В таблице приведены результаты операции пересечения (r1 r2).
|
|
r1 r2 |
A1 |
A2 |
A3 |
|
a1 |
b1 |
c1 |
Оператор естественного соединения ><(r1, r2) формирует из r1 и r2 , имеющих один или несколько одинаковых имен атрибутов, новое отношение r’ , схема которого есть объединение схем двух отношений, а кортежи формируются из кортежей первого отношения путем присоединения кортежей второго отношения при одинаковых значениях одноименных атрибутов.
В результате выполнения этой операции:
r’={t’=<t1t2> t1 r1; t2 r2; rel(r1)rel(r2); rel(r’)=rel(r1) rel(r2)}.
В нотации компьютерных языков оператор соединения есть:
JOIN (r1, r2).
В таблицах приведены результаты r1><r2 и r3><r4.
-
r1><r2
A1
A2
A3
A4
A5
r3><r4
A1
A4
A5
A6
a1
b1
1
c2
d3
a1
c2
d3
1
a1
b1
1
c2
d1
a2
c1
d1
2
a2
b2
3
c1
d1
a3
b3
2
c1
d2
Оператор -соединения ><(r1, r2) формирует из r1 и r2 арности n1 и n2 новое отношение r’ арности (n1+n2) при выполнении некоторого условия В=(d1id2j), где ={=, , >, , <, }; первые n1 компонентов кортежа образованы кортежами, принадлежащими отношению r1, а последние - кортежами, принадлежащими отношению r2.
В результате исполнения этой операции:
r’={t`=<t1t2> <t1t2>(r1r2), В=(d1id2j), rel(r’)=<rel(r1), rel(r2)>}.
В нотации компьютерных языков это:
JOIN (r1, r2, УСЛОВИЕ).
r’ |
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
|
|
a1 |
b1 |
1 |
c1 |
d1 |
2 |
Например, -соединение r1 и r4 при условии A6>A3, r’=JOIN (r1, r4, A6>A3). Результаты этой операции представлены таблицей.
|
|
a1 |
b1 |
1 |
c2 |
d2 |
3 |
|
|
a1 |
b1 |
1 |
c3 |
d3 |
2 |
|
|
a3 |
b3 |
2 |
c2 |
d2 |
3 |
Частным случаем -соединения является эквисоединение, когда формируется новая таблица, для которой различные атрибуты различных отношений имеют одинаковое значение. Например, <имя_порт_приписки>=<имя_порт_назначения>.
Пример: r’=JOIN (r1, r4, r1.A3=r4.A6).
-
r’
r1.A1
r1.A2
r1.A3
r2.A4
r2.A5
r2.A6
a1
b1
1
c2
d3
1
a3
b3
2
c1
d1
2
a3
b3
2
c3
d3
2
a2
B2
3
c2
d2
3
a4
b1
3
c2
d2
3
Оператор деления :(r1, r2) позволяет формировать из двух отношений r1 и r2 арности n1 и n2 соответственно новое отношение r’ арности (n1 - n2). При этом n1> n2. Тогда (r1: r2) есть множество кортежей t’ длины (n1 - n2 ) для всех кортежей, удовлетворяющих
t1=<t’t2> .
В результате выполнения этой операции:
r’={t’ t1 =<t’t2>, rel(r’)=rel(r1)\rel(r2), |rel(r’)|=|rel(r1)|-|rel(r2)|, rel(r2) }.
В нотации компьютерных языков этот оператор:
DIVISION(r1, r2).
В таблицах приведены примеры на использование оператора деления
r’1=DIV(r5, r1), r’2=DIV(r5, r4) r’3=DIV(r5, r3)
-
r’1
A4
A5
A6
r’2
A1
A2
A3
r’3
A2
A3
A6
c1
d1
2
a1
b1
1
b1
1
1
c2
d1
3
a2
b2
3
c2
d2
3
a3
b3
2
c2
d3
1
c2
d3
2
c3
d3
3