- •Содержание
- •1 Элементы теории множеств. Комбинаторика. 5
- •Математическая логика: Булева аллгебра 88
- •Теория алгоритмов 129
- •Теория графов 162
- •Математическая логика: Исчисления высказываний и предикатов 207
- •Элементы теории множеств. Комбинаторика.
- •Введение
- •Примеры задач.
- •Задача о расположении конвертов
- •Задача о Ханойской башне
- •Базовые обозначения
- •Правило суммы и правило произведения
- •Основы теории множеств
- •Понятие множества
- •Парадокс Рассела
- •Подмножества
- •Операции над множествами
- •Диаграммы Эйлера-Венна
- •Прямое произведение множеств
- •Бинарные отношения и функции
- •Бинарные отношения
- •Функции
- •Специальные бинарные отношения: Отношение эквивалентности
- •Специальные бинарные отношения: Отношение порядка
- •Лексикографический порядок
- •Выборки с повторениями и без повторений
- •Размещения и сочетания
- •Треугольник Паскаля
- •Связь сочетаний и (0,1)-векторов
- •Перебор сочетаний
- •Бином Ньютона
- •Мультимножества
- •Связь мультимножеств и (0,1)-векторов
- •Полином Ньютона
- •Разбиения множеств.
- •Приложение: программа перебора сочетаний
- •Перестановки
- •Понятие перестановки
- •Группа перестановок
- •Циклы перестановки
- •Тип перестановки
- •Разложения и разбиения натуральных чисел
- •Разложения натуральных чисел
- •Разбиения натуральных чисел
- •Принцип включения-исключения
- •Принцип включения-исключения
- •Задача о беспорядках
- •Мощность объединения множеств
- •Число целочисленных решений системы неравенств
- •Математическая логика: Булева аллгебра
- •Булева алгебра. Функции алгебры логики.
- •Булевы функции
- •Формулы
- •Основные тождества
- •Разложение функции по переменным
- •Дизъюнктивная и конъюнктивная нормальные формы
- •Полином Жегалкина
- •1 ⊕ X1 ⊕ x2x3 - полином Жегалкина.
- •Полнота системы функций
- •Функции, сохраняющие ноль
- •Функции, сохраняющие единицу
- •Двойственность
- •Монотонность
- •Линейность
- •Критерий полноты системы функций
- •Теория алгоритмов
- •Машины Тьюринга
- •Понятие алгоритма
- •Машина Тьюринга
- •Способы записи машины Тьюринга
- •Стандартные конфигурации
- •Вычислимые функции
- •Алгоритмически неразрешимые задачи
- •Сложность алгоритма
- •Полиномиальная сводимость
- •Классы задач в форме распознавания свойств
- •4 Теория графов
- •4.1 Определения графа
- •Общее определение
- •Виды графов
- •Обыкновенный граф
- •Примеры графов
- •Графы Бержа
- •4.2 Изоморфизм графов
- •4.2.1 Инварианты графа
- •Операции
- •Основные операции над графами
- •Подграфы
- •Дополнение графа
- •Маршруты и связность
- •Деревья
- •Матрицы, связанные с графом
- •Матрица смежности
- •Матрица инцидентности
- •Список ребер
- •Обходы графов
- •Эйлеров цикл
- •Гамильтонов цикл
- •Задачи и алгоритмы
- •Остов минимального веса
- •Алгоритм 4.8.1 (Алгоритм Краскала).
- •Задача коммивояжера
- •Задача о клике
- •Задача о вершинном покрытии
- •Задача о гамильтоновом цикле
- •Снова задача коммивояжера
- •Алгоритм дерева
- •Математическая логика: Исчисления высказываний и предикатов
- •Исчисление высказываний
- •Пример задачи логики высказываний
- •Формальные теории
- •Формальная теория исчисление высказываний
- •Теоремы исчисления высказываний
- •Теорема о полноте исчисления высказываний
- •Независимость аксиом исчисления высказываний
- •Исчисление предикатов
- •Пример задачи логики предикатов
- •Формальная теория исчисление предикатов
- •Алфавит.
- •Формулы.
- •Аксиомы.
- •Правила вывода.
- •Интерпретация
- •Литература
Формулы
Использование табличного задания функций часто неудобно. Во-первых, число строк в таблице экспоненциально зависит от числа переменных функции. Уже при 10 переменных, число строк таблицы должно быть 1024. Во-вторых, что более важно, при анализе свойств функции нельзя выполнять какие-либо алгебраические преобразования для облегчения этого процесса. В связи с этим будет удобно ввести понятие формулы, как еще одного представления функции.
Выберем некоторую систему функций из P2: P = {f1, f2, ..., fk} ⊆ P2,
k ≥ 1. Назовем функции из системы P элементарными функциями.
Тогда формула над {f1, f2, ..., fk} определяется рекурсивно:
Определение 2.1.3 . 1. Если f ∈ P - функция от n аргументов, то
f (x1, ..., xn) - формула над P.
2. Если f ∈ P - функция от n аргументов и U1, U2, ..., Un -
формулы или логические переменные, то f (U1, ..., Un) - формула над P.
Замечание 2.1.3 . Мы определили формулу над P . Формула всегда мыслится в связи с каким-то указанным множеством элементарных функций.
Каждой формуле можно однозначно сопоставить функцию:
Если U = f (x1, ..., xn) ∈ P, то формуле U сопоставляется функция
fU = f (x1, ..., xn).
Пусть U = f (U1, ..., Un), где f (x1, ..., xn) ∈ P и U1, U2, ..., Un - формулы
или логические переменные. Тогда fU = f (fU1 , ..., fUn ), где fUi - функция, сопоставленная формуле Ui, если Ui - формула, и fUi = xi, если Ui = xi
логическая переменная.
Говорят, что формула U реализует функцию fU (x1, ..., xn).
Пример 2.1.4 . Пусть дано множество элементарных функций P =
{f (x, y), g(x, y), h(x, y)}, где функции f (x, y), g(x, y), h(x, y) заданы
следующей таблицей:
-
x
y
f
g
h
0
0
1
1
0
0
1
0
1
1 .
1
0
0
0
1
1
1
1
1
1
Пусть дана формула U = f (g(x, y), h(y, z)). Найдем функцию fU , реализованную формулой U . Для этого сначала найдем столбцы
значений для функций, заданных подформулами g(x, y) и h(y, z), а затем, уже получив нужные значения, подставим их в качестве
аргументов для функции f :
-
x
y
z
g(x, y)
h(y, z)
f (g(x, y), h(y, z))
0
0
0
1
0
f (1, 0) = 0
0
0
1
1
1
f (1, 1) = 1
0
1
0
1
1
f (1, 1) = 1
0
1
1
1
1
f (1, 1) = 1 .
1
0
0
0
0
f (0, 0) = 1
1
0
1
0
1
f (0, 1) = 0
1
1
0
1
1
f (1, 1) = 1
1
1
1
1
1
f (1, 1) = 1
Пример 2.1.5 . Для понимания порядка вычислений для получения функции, реализуемой данной формулой, удобно использовать древесную диаграмму.
Пусть определено множество элементарных функций P =
{f (x, y, z), g(x, y), h(x)} и дана формула U = f (x, g(h(y), 0), f (z, x, 1)).
Строение формулы U изображено на рисунке 14. Внутренние узлы
представленного дерева помечены символами функций из P. концевые
узлы (листья) помечены символами переменных или констант. Для
вычисления реализуемой функции на произвольном наборе аргументов, необходимо пометить листья соответствующими параметрами и, поднимаясь наверх, последовательно заполнять каждый уровень дерева значениями для промежуточных узлов.
Определение 2.1.4 . Будем говорить, что формулы U и B
эквивалентны, и писать U = B, если fU = fB с точностью до
несущественных переменных.
Рассмотрим основные функции, используемые в качестве элементарных функций в алгебре логики.
Всего существует четыре различные функции от одной переменной: тождественный ноль - f (x) = 0; тождественная единица - f (x) = 1; тождественная функция или тождественный x - f (x) = x; отрицание x
или "не x" - f (x) = ¬x, так же обозначается x.
f
x g f
h 0 z x 1 y
Рисунок 14: Строение формулы f (x, g(h(y), 0), f (z, x, 1)).
-
x
0
1
x
¬x
0
0
1
0
1
1
0
1
1
0
Из них тождественный ноль и тождественная единица не зависят существенно от x. То есть фактически это две функции без аргументов
константы: f = 0 и f = 1.
Замечание 2.1.4 . Может показаться, что излишне говорить о 0, 1 и x здесь, как о функциях. Необходимо понимать, что в различном контексте эти символы могут пониматься различным образом. С одной стороны мы имеем константы 0 и 1 и некоторую переменную x. Но в контексте, предполагающем использование функций, эти символы будут пониматься как отображения, указанные в таблице выше.
Численное значение этих величин не меняется, но меняется смысл, который мы вкладываем в запись.
Рассмотрим основные булевы функции от двух переменных.
-
x
y
x ∨ y
x ∧ y
x ⊕ y
x ⊃ y
x ≡ y
x|y
x ↓ y
0
0
0
0
0
1
1
1
1
0
1
1
0
1
1
0
1
0
1
0
1
0
1
0
0
1
0
1
1
1
1
0
1
1
0
0
f (x, y) = x ∨ y - дизъюнкция, логическое "или".
f (x, y) = x ∧ y - конъюнкция, логическое "и", логическое умножение.
Также можно использовать обозначения x&y или xy.
f (x, y) = x ⊕ y - сложение по модулю два, логическое исключающее
"или". Также можно использовать обозначение x + y.
f (x, y) = x ⊃ y - импликация, "если, то". Также можно использовать обозначение x → y.
f (x, y) = x ≡ y - эквивалентность. Также можно использовать обозначение x ∼ y.
f (x, y) = x | y - штрих Шеффера.
f (x, y) = x ↓ y - стрелка Пирса.
Всего, как мы помним, существует 16 различных функций от
двух переменных. Мы выбрали 7, существенно зависящих от обоих переменных и имеющих наибольшее значение. Добавив к ним функции от одной переменной и константы (функции от 0 переменных) получим систему функций, подмножества которой мы в основном будем испльзовать в качестве множеств элементарных функций для построения формул
P = {0, 1, x, x, x ∨ y, xy, x ⊕ y, x ⊃ y, x ≡ y, x|y, x ↓ y}.
Функции {x, x∨y, xy, x⊕y, x ⊃ y, x ≡ y, x|y, x ↓ y} будем также называть операциями.
Пример 2.1.6 . Рассмотрим пример формулы над P :
U = (((xy) ∨ (xz)) ∨ (yz)).
В этой записи слишком много скобок.
Чтобы облегчить чтение и запись формул можно установить приоритеты выполнения операций. Будем считать, что наивысший приоритет имеет операция отрицания. Из функций от двух переменных
наивысший приоритет будет иметь коньюнкция - ∧. Все остальные
операции имеют одинаковый приоритет.
Кроме того, можно убедиться, что операции ∧, ∨, ⊕, ≡ являются ассоциативными. Таким образом, вместо x ◦ (y ◦ z) или (x ◦ y) ◦ z можно
писать x ◦ y ◦ z, если ◦ ∈ {∧, ∨, ⊕, ≡}. Операции ⊃, |, ↓ не являются
ассоциативными.
Пример 2.1.7 . С учетом указанных договоренностей, формула из примера 2.1.6 примет вид:
U = xy ∨ xz ∨ yz.
Эта формула задает известную функцию от трех переменных - функцию голосования. Функция голосования носит такое название, поскольку моделирует голосование трех человек: функция принимает значение 1 тогда и только тогда, когда по крайней мере двое проголосовали положительно.