- •Оглавление
- •Предисловие
- •1. Теоретико‑множественные основания дисциплины
- •1.1. Понятия и аксиомы теории множеств
- •1.2. Декартовы произведения, отношения и отношение эквивалентности
- •1.3. Понятия образа, прообраза, функции и отображения на конечном множестве. Аксиома выделения.
- •1.4. Аксиомы степени и бесконечности. Мощности и кардинальные числа множеств
- •1.5. Счетные и континуальные множества
- •1.6. Ординалы и трансфиниты. Аксиома выбора и континуум‑гипотеза
- •2. Основы математической логики
- •2.1. Высказывания и функции на высказываниях
- •2.2. Операции математической логики
- •2.3. Понятие формулы и свойства операций
- •2.4. Разложения булевых функций. Принцип двойственности. Совершенные нормальные формы.
- •2.5. Понятие полноты системы булевых функций
- •2.5. Исчисление предикатов
- •2.6. Введение в методы теории доказательств
- •1 Если X a,
- •0 Если X a.
- •1 Если X a,
- •0 Если X a.
- •3. Комбинаторика
- •3.1. Размещения
- •3.2. Размещения без повторений
- •3.3. Перестановки, подстановки и их свойства
- •3.4. Сочетания, структура соединений
- •3.5. Свойства биномиальных коэффициентов
- •Структура соединений
- •3.6. Понятие производящей функции
- •3.7. Соединения с повторениями
- •3.8. Разбиения множеств
- •3.9. Разбиения чисел
- •3.10. Композиции чисел
- •4. Основы теории графов
- •4.1. Основные понятия и определения
- •4.2. Графы и бинарные отношения
- •4.3. Понятие изоморфизма и изоморфизм плоских графов
- •4.4. Степени вершин графа
- •4.5. Представление графов матрицами
- •4.6. Представление графов списками инцидентности. Оценка пространственной сложности алгоритмов.
- •4.7. Маршруты, цепи, циклы и связность
- •4.7. Эйлеровы циклы и цепи
- •4.9. Гамильтоновы циклы. Оценка временной сложности алгоритмов
- •4.10. Деревья
- •4.11. Раскраска вершин и теорема Шеннона об информационной емкости графа
- •4.12. Раскраска ребер графа и теоремы о хроматическом классе
- •Ответы и решения
- •Список литературы
2.5. Понятие полноты системы булевых функций
Система булевых функций {F1, F2, …, Fn} называется полной, если любая булева функция может быть выражена через эту систему.
Применение понятия С.Д.Н.Ф. позволяет легко установить полноту операций отрицания, конъюнкции и дизъюнкции.
Теорема 2.3 Система операций отрицания, конъюнкции и дизъюнкции полна.
Доказательство.
Пусть F(x1, x2,…,xn) = 0. Тогда представим ее в виде F(x1, x2, …, xn) = x1 & x1. Если же F(x1, x2, …,xn) = 1, то представим ее как С.Д.Н.Ф. Учитывая, что
x при = 0,
x =
x при = 1,
получим доказательство теоремы.
Пусть — некоторое подмножество булевых функций. Замыканием называется множество всех булевых функций, представимых в виде формул через функции множества . Замыкание множества обозначается []. Если = [], то замкнуто. Можно показать, что замыкание обладает рядом свойств, важнейшими из которых являются:
[] и [[]] = [].
В терминах замыкания можно дать следующее определение полноты. Система функций {F1, F2, …, Fn} = называется полной, если замыкание равно множеству всех булевых функций.
Отметим, что подробное и глубокое изучение замкнутых классов булевых функций было выполнено американским математиком Э. Постом.
Из результатов его теории, в частности, следует, что рассмотренная выше система операций отрицания, конъюнкции и дизъюнкции является лишь примером полных систем.
2.5. Исчисление предикатов
Пусть A — произвольное множество и x1, x2, …, xn A. Построим функцию P: A Такая функция называется предикатом, а множество A — предметной областью предиката. Сами переменные x1, x2,…, xn называются предметными переменными, а число n — местностью предиката.
Рассмотрим, например, одноместный предикат
P(x — поэт классик),
который принимает значение единица, если x — фамилия и инициалы поэта — классика и 0 — в противном случае. При подстановке x = «Пушкин А.С.» имеем P = 1, а, например, если x = «Достоевский Ф.М.», то P = 0. То есть в данном случае в качестве предметной области рассматривается литературоведение.
Такая ситуация может возникнуть, например, тогда, когда происходит диалог пользователя с компьютером на интеллектуальном уровне. В процессе этого диалога компьютер выдает текущий запрос на экран или в аудиосистему: «Сообщите фамилию и инициалы, интересующего Вас поэта‑классика». Если Вы сообщаете, скажем, «Пушкин А.С.», то диалоговая система сужает область своего определения на базу данных, соответствующую жизни и деятельности А.С. Пушкина. Это происходит благодаря тому, что вычисляемый диалоговой системой предикат принимает истинное значение — 1. Если же Вы сообщите, скажем, «Достоевский Ф.М.», то предикат примет значение 0 и настроенная на него компьютерная программа возможно сообщит, что Ф.М. Достоевский, как поэт не известен.
В данном случае мы не останавливаемся на описании способа вычисления предиката. Отметим только, что подобные вычисления, как правило, относятся к компетенции программирования.
Рассмотрим еще построение предиката, который принимает значение 1, если конец вектора V = (xv,yv) принадлежит квадрату со стороной единичной длины, смещенного относительно центра системы координат XОУ на l единиц вправо и на m единиц вверх (Рисунок 2.1).
В данном случае предметной областью является теория множеств. Вначале определим предикат принадлежности. Скажем, что
P(а A) = 1
тогда и только тогда, когда а A.
Для построения предиката выделим геометрическое место точек квадрата.
y l
(xv,yv) m
o x
Рисунок 2.1.
Очевидно, неравенство -0.5 (x - l) 0.5 выделяет полосу единичной ширины, смещенную на l единиц вправо по оси x. Аналогично, неравенство -0.5 (у - m) 0.5 выделяет полосу также единичной ширины, но смещенную на m единиц вверх по оси ординат. Обозначим выделенные множества соответственно Xl и Ym .
Ясно, что пересечение этих множеств определяет изображенный на рисунке квадрат. Учитывая это, наш предикат может быть записан следующим образом:
P((xv, yv) Xl Ym).
Если при этом требуется выразить этот же предикат через операции отношений и операции математической логики, то в таком случае поступим следующим образом. Вначале определим предикат отношения : P(x у) = 1 тогда и только тогда, когда x у. Далее заметим, что
P((xv, yv) Xl Ym) = P((xv, yv) Xl) P((xv, yv) Ym).
Справедливость данного выражения проверяется непосредственно.
Выразим теперь предикаты отношения через предикаты принадлежности:
P((xv, yv) Xl) = P(-0.5 (x - l) 0.5),
P((xv, yv) Ym) = P(-0.5 (у - m) 0.5).
Окончательно получим
P((xv, yv) Xl Ym) = P(-0.5 (xv - l) 0.5) P(-0.5
(уv - m) 0.5) = P(-0.5 (xv - l)) P(-0.5 (уv - m) )
P((xv - l) 0.5) P((уv - m) 0.5).
Правую часть этого отношения можно реализовать на уровне команд любого современного микропроцессора.
Данный пример иллюстрирует применение предикатов в графическом интерфейсе компьютерных диалоговых систем.