- •Оглавление
- •Глава 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.1. Унарные операции
Оператор выбора B(r) позволяет извлекать из отношения r кортежи, удовлетворяющие условию В, и формировать новое отношение r’ . Условия выбора задаются, как правило, операторами сравнения {=, , >, , <, } и/или логическими связками {, , }. Например, B=(Аi=kdi); B=(Аikdi); B=(Аi>kdi ); B=(Аi<kdi); B=(Аikdi );
B=(Аikdi ); B=((A1, A2,...An)=kti); B=((A1, A2,...An)kti); B=((A1, А2,...An)>kti); B=((A1, A2,...An)<kti); B=((A1, A2,...An)kti); B=((A1, A2,...An)kti); B=Bi Bj ; B=Bi Bj; B= Bj и т. п..
Результатом исполнения этой операции будет новое отношение r’, т.е.
r’= B(r)={ t’ t’ r; B, rel(r’)=rel(r)} r.
Пример: выбрать кортежи отношения r1 по ключу А1=а2, т.е. r’1={t’| B:=(A1=a2}, r2 - по значению атрибута A3=1, т.е. r’2={t’| B:=(A3=1}, r5 – по значениям атрибутов {A1=a1, A2=b1, A3=1}, т.е. r’5={t’| B:=(A1=a1), (A2=b1)(A3=1)}. Ниже приведены отношения в результате исполнения этих операций.
-
r’1
A1
A2
A3
r’2
A1
A2
A3
r5
A1
A2
A3
A4
A5
A6
a2
b2
3
a2
b3
1
a1
b1
1
c2
d3
1
a1
b1
1
a1
b1
1
c3
d3
3
a1
b1
1
c1
d1
2
В нотации компьютерных языков операцию выбора записывают так:
SELECT (отношение; УСЛОВИЯ).
Для данного примера это будет описано так:
r’1=SELECT(r1, A1=’a2’); r’2=SELECT(r2, A3=’1’);
r’5=SELECT(r5; A1=’a1’ AND A2=’b1’ AND A3=’1’).
Значения атрибутов заключены в апострофы. Это означает, что строка символов является значением поля записи. Данное правило относится к любым одиночным символам и строкам, представляющим значение атрибута. Это делается для того, чтобы отличить значение от имени атрибута, переменных параметров и числовых констант.
При программировании на алгоритмических языках логические связки {,,} замещаются операторами AND, OR, NOT соответственно.
Например, необходимо выбрать кортежи отношения r1 по значению атрибута A3=3, т.е. r’1={t’| B:=(A3=3}, r2 - по значению атрибутов A3=1 или A2=b1, т.е. r’2={t’| B=(A3=1A2=b1}, r5 – по значению атрибутов (A1=a1, A2=b1, A3=1и A4c2), т.е. r’5={t’| B=((A1=a1)(A2=b1)(A3=1)(A4c2)}.
Ниже приведены отношения в результате исполнения этих операций.
-
r’1
A1
A2
A3
r’2
A1
A2
A3
r5
A1
A2
A3
A4
A5
A6
a1
b1
1
a2
b3
1
a1
b1
1
c3
d3
3
a3
b3
2
a1
b1
1
a1
b1
1
c1
d1
2
Оператор выбора как бы разрезает таблицу на отдельные строки, удаляет строки, не удовлетворяющие заданным условиям и склеивает новую таблицу.
В нотации компьютерных языков оператор выбора описывают так:
r’1=SELECT(r1; A3=NOT’3’); r’2=SELECT(r2; A3=’1’OR A2=’b1’);
r’5=SELECT(r5; A1=’a1’AND A2=’b1’AND A3=’1’AND A4=NOT’c2’).
При задании нескольких операторов выбора допускается их композиция, т. е.В1В2…Вь=.В1В2…Вь.
Оператор проекции rel(r) позволяет формировать из данного отношения r со схемой rel(r)=(A1, A2,..An) новое отношение r’ со схемой rel(r’)=(Ai, Aj,.. Ak), где 1i, j,kn, путем удаления и (или) переупорядочения атрибутов.
Результатом выполнения этой операции будет новое отношение, удовлетворяющее новой схеме
r’=rel(r)={ t’ |rel(r’)||rel(r)|}.
Следует обратить внимание, что число атрибутов схемы формируемого отношения меньше или равно числу атрибутов схемы исходного отношения, т.е. |rel(r’)||rel(r)|, а число кортежей формируемого отношения равно числу кортежей исходного отношения, т.е. |r’|=|r|.
Например, необходимо выбрать значения ключей отношений r1 и r3, т.е. rel(r’1)= (A1), rel(r’3)= (A1, A5).
-
r’1
A1
r’3
A1
A5
a1
a1
d3
a2
a2
d1
a3
a3
d2
a4
a1
d1
При задании нескольких операторов проекции допускается их композиция, т. е. rel1 rel2 … relь (r)= rel(r)re2(r)…re(r).
В нотации компьютерных языков операцию проекции записывают так:
PROJECT(отношение, СПИСОК AТРИБУТОВ).
Для приведенных примеров имеем:r’1=PROJECT(r1, A1); r’3=PROJECT(r3, A1, A5); r’5=PROJECT(r5, A1, A2, A3).
Оператор дополнения r. Для формирования дополнения отношения необходимо найти множество всех кортежей со схемой заданного отношения rel(r) на области определения D, т. е. найти размещение всех значений домена отношения |D|=n на число компонент -k схемы отношения rel(r), т.е. найти
dom(r)=(n)k=n*(n-1)*(n-2)*...*(n-k+1)
и удалить из этого множества кортежи исходного отношения r.
Множество таких кортежей очень большое. Если хотя бы один атрибут отношения счетный, но не конечный, то |dom(r)|=.
Например, для r3 имеем D1={a1, a2, a3}, D4={c1, c2}, D5={d1, d2, d3}, т. е. n=|D|=|D1D4D5|=8 и к=3. Следовательно, число кортежей дополнения равно |dom(r3)|=(8)3=8*7*6*5*4=6720.
Если значения атрибутов находятся в пределах своих доменов, то |dom(r)|=|D1|*|D2|*...*|Dm|. Например, для r3 имеем |dom(r)|=3*2*3=18, а |r|=14.
Чтобы получить кортежи отношенияr3 следует из множества кортежей dom(r3) удалить кортежи r3, т. е. r3= dom(r3)\ r3).
Ниже двумя таблицами представлены dom(r3) и r3..
-
dom(r3)
A1
A4
A5
r3
A1
A4
A5
a1
c1
d1
a1
c1
d1
a1
c1
d2
a1
c1
d2
a1
c1
d3
a1
c1
d3
a1
c2
d1
a1
c2
d2
a1
c2
d2
a2
c1
d2
a1
c2
d3
a2
c1
d3
a2
c1
d1
a2
c2
d1
a2
c1
d2
a2
c2
d2
a2
c1
d3
a2
c2
d3
a2
c2
d1
a3
c1
d1
a2
c2
d2
a3
c1
d3
a2
c2
d3
a3
c2
d1
a3
c1
d1
a3
c2
d2
a3
c1
d2
a3
c2
d3
a3
c1
d3
a3
c2
d1
a3
c2
d2
a3
c2
d3