- •Содержание
- •1 Элементы теории множеств. Комбинаторика. 5
- •Математическая логика: Булева аллгебра 88
- •Теория алгоритмов 129
- •Теория графов 162
- •Математическая логика: Исчисления высказываний и предикатов 207
- •Элементы теории множеств. Комбинаторика.
- •Введение
- •Примеры задач.
- •Задача о расположении конвертов
- •Задача о Ханойской башне
- •Базовые обозначения
- •Правило суммы и правило произведения
- •Основы теории множеств
- •Понятие множества
- •Парадокс Рассела
- •Подмножества
- •Операции над множествами
- •Диаграммы Эйлера-Венна
- •Прямое произведение множеств
- •Бинарные отношения и функции
- •Бинарные отношения
- •Функции
- •Специальные бинарные отношения: Отношение эквивалентности
- •Специальные бинарные отношения: Отношение порядка
- •Лексикографический порядок
- •Выборки с повторениями и без повторений
- •Размещения и сочетания
- •Треугольник Паскаля
- •Связь сочетаний и (0,1)-векторов
- •Перебор сочетаний
- •Бином Ньютона
- •Мультимножества
- •Связь мультимножеств и (0,1)-векторов
- •Полином Ньютона
- •Разбиения множеств.
- •Приложение: программа перебора сочетаний
- •Перестановки
- •Понятие перестановки
- •Группа перестановок
- •Циклы перестановки
- •Тип перестановки
- •Разложения и разбиения натуральных чисел
- •Разложения натуральных чисел
- •Разбиения натуральных чисел
- •Принцип включения-исключения
- •Принцип включения-исключения
- •Задача о беспорядках
- •Мощность объединения множеств
- •Число целочисленных решений системы неравенств
- •Математическая логика: Булева аллгебра
- •Булева алгебра. Функции алгебры логики.
- •Булевы функции
- •Формулы
- •Основные тождества
- •Разложение функции по переменным
- •Дизъюнктивная и конъюнктивная нормальные формы
- •Полином Жегалкина
- •1 ⊕ X1 ⊕ x2x3 - полином Жегалкина.
- •Полнота системы функций
- •Функции, сохраняющие ноль
- •Функции, сохраняющие единицу
- •Двойственность
- •Монотонность
- •Линейность
- •Критерий полноты системы функций
- •Теория алгоритмов
- •Машины Тьюринга
- •Понятие алгоритма
- •Машина Тьюринга
- •Способы записи машины Тьюринга
- •Стандартные конфигурации
- •Вычислимые функции
- •Алгоритмически неразрешимые задачи
- •Сложность алгоритма
- •Полиномиальная сводимость
- •Классы задач в форме распознавания свойств
- •4 Теория графов
- •4.1 Определения графа
- •Общее определение
- •Виды графов
- •Обыкновенный граф
- •Примеры графов
- •Графы Бержа
- •4.2 Изоморфизм графов
- •4.2.1 Инварианты графа
- •Операции
- •Основные операции над графами
- •Подграфы
- •Дополнение графа
- •Маршруты и связность
- •Деревья
- •Матрицы, связанные с графом
- •Матрица смежности
- •Матрица инцидентности
- •Список ребер
- •Обходы графов
- •Эйлеров цикл
- •Гамильтонов цикл
- •Задачи и алгоритмы
- •Остов минимального веса
- •Алгоритм 4.8.1 (Алгоритм Краскала).
- •Задача коммивояжера
- •Задача о клике
- •Задача о вершинном покрытии
- •Задача о гамильтоновом цикле
- •Снова задача коммивояжера
- •Алгоритм дерева
- •Математическая логика: Исчисления высказываний и предикатов
- •Исчисление высказываний
- •Пример задачи логики высказываний
- •Формальные теории
- •Формальная теория исчисление высказываний
- •Теоремы исчисления высказываний
- •Теорема о полноте исчисления высказываний
- •Независимость аксиом исчисления высказываний
- •Исчисление предикатов
- •Пример задачи логики предикатов
- •Формальная теория исчисление предикатов
- •Алфавит.
- •Формулы.
- •Аксиомы.
- •Правила вывода.
- •Интерпретация
- •Литература
Мощность объединения множеств
Приведем еще одну задачу, которая решается с помощью принципа включения-исключения, - задачу нахождения мощности объединения пересекающихся множеств.
Задача 1.8.4 . Пусть A1, A2, ..., Ak - конечные множества. Пусть
A = A1 ∪ A2 ∪ ... ∪ Ak. Требуется найти мощность A, если известны
|Ai|, i = 1, k, и | i∈I Ai|, I ⊆ {1, 2, ..., k}.
Пусть S = {1, 2, ..., k} и T ⊆ S. Будем говорить, что x ∈ A обладает свойством i, если x ∈ Ai. Обозначим
f=(T ) - число элементов из A, обладающих всеми свойствами из T и не обладающих другими свойствами из S;
f≥(T ) - число элементов из A, обладающих всеми свойствами из T . Очевидно, f≥(T ) = | i∈T Ai|, если T не пусто и f≥(∅) = |A|
Тогда верна формула (19) и, следовательно, можно использовать формулу (21).
Утверждение 1.8.4 .
k
|A1 ∪ A2 ∪ ... ∪ Ak| = \ |Ai| − \
|Ai1
∩ Ai2 |+
+ \
1≤i1<i2<i3≤k
|Ai1
i=1
∩ Ai2
1≤i1<i2≤k
3
∩ Ai | − · · · + (−1)k+1|A1 ∩ A2 ∩ ... ∩ Ak|. (22)
Доказательство. Поскольку каждый элемент из A обладает хотя бы одним свойством из S, то f=(∅) = 0. С другой стороны из формулы (21)
получаем
≥
0 =f=(∅) = \(−1)|Y |f(Y ) = |A| + \ (−1)|Y || n Ai| =
Y ⊆S
k
Y ⊆S,
|Y |≥1
i∈Y
=|A| − \ |Ai| + \
|Ai1
∩ Ai2 |−
i=1
\
−
1≤i1<i2<i3≤k
1≤i1<i2≤k
k
|Ai1 ∩ Ai2 ∩ Ai3 | + · · · + (−1)
|A1 ∩ A2 ∩ ... ∩ Ak|.
Перенесем все слагаемые кроме первого за знак равенства и получим искомое утверждение.
D
Часто, именно формулу (22) называют принципом включения- исключения. Тем не менее, как мы видели, с помощью принципа включения-исключения решаются и другие задачи.
Число целочисленных решений системы неравенств
В подразделе 1.7.1 мы показали, что число решений уравнения x1 + x2 +
· · + xk = n в неотрицательных целых числах находится по формуле (16):
n + k − 1
N=(n, k) =
,
k − 1
а число решений неравенства x1 + x2 + · · · + xk ≤ n в неотрицательных
целых числах - по формуле (17):
N≤(n, k) =
n + k
.
k
Здесь мы расширим множество систем, для которых можно будет найти число решений.
Для начала положим, что на значения переменных наложены ограничения снизу. Пусть ai ∈ N0, i = 1, k, и задана система
x1 + x2 + · · · + xk = n, ai ≤ xi, i = 1, k.
Чтобы найти число решений этой системы, достаточно сделать замену
yi = xi − ai. Тогда yi ≥ 0 и
(y1 + a1) + (y2 + a2) + · · · + (yk + ak) = n, y1 + y2 + · · · + yk = n − a1 − a2 − · · · − ak.
Согласно формуле (16) число целочисленных решений данной системы
i=1
n + k − 1 − ):k
ai
. (23)
k − 1
Аналогично, число решений системы
x1 + x2 + · · · + xk ≤ n, ai ≤ xi, i = 1, k,
равно
i=1
n + k − ):k
ai
. (24)
k
Рассмотрим систему с ограничениями на переменные и сверху, и снизу. Пусть ai, bi ∈ N0, ai ≤ bi, i = 1, k. Требуется найти число целочисленных
решений системы
x1 + x2 + · · · + xk = n, (25)
ai ≤ xi ≤ bi, i = 1, k. (26)
Пусть A - множество решений системы
x1 + x2 + · · · + xk = n, (*)
ai ≤ xi, i = 1, k :
A = {(α1, α2, ..., αk) | α1 + α2 + · · · αk = n, ai ≤ αi, i = 1, k}.
Согласно (23)
|A| =
n + k − 1 − ):k
i=1
k − 1ai
.
Обозначим As, s = 1, k, - множество решений системы (*), для которых не выполняется ограничение xs ≤ bs:
As = {(α1, α2, ..., αk) | α1 + α2 + · · · αk = n,
ai ≤ αi, i = 1, k, bs + 1 ≤ xs}.
Таким образом, все решения системы (*), которые не удовлетворяют хотябы одной верхней границе из (26), лежат в множестве A1 ∪A2 ∪...∪Ak.
Следовательно, число решений системы (25)-(26) равно
|A \ (A1 ∪ A2 ∪ ... ∪ Ak)| = |A| − |A1 ∪ A2 ∪ ... ∪ Ak|.
Использовав утверждение 1.8.4, получим
|A| − |A1 ∪ A2 ∪ ... ∪ Ak| = |A| − \
Y ⊆{1,...,k},
|Y |≥1
(−1)|Y |−1| n Ai|. (**)
i∈Y
Теперь, чтобы найти число решений системы (25)-(26), достаточно научиться находить мощность пересечения произвольного набора множеств Aj .
Пусть Y ⊆ {1, ..., k}. Тогда
n Aj = {(α1, α2, ..., αk) | α1 + α2 + · · · αk = n,
j∈Y
ai ≤ αi, i = 1, k, bs + 1 ≤ xs, s ∈ Y }.
Другими словами, j∈Y Aj есть множество решений системы
x1 + x2 + · · · + xk = n,
ai ≤ xi, i ∈ {1, ..., k} \ Y, bs + 1 ≤ xs, s ∈ Y.
i=1
Тогда согласно (23)
n
|
i∈Y
Ai| =
n + k − 1 − ):k
ai − ):
k − 1
j∈Y
(bj + 1 − aj )
.
Подставив эти значения в формулу (**), получим число решений системы (25)-(26).Рассуждения для системы
x1 + x2 + · · · + xk ≤ n, ai ≤ xi ≤ bi, i = 1, k.
аналогичны рассуждениям для системы (25)-(26) с точностью до замены величины (23) на величину (24).
Пример 1.8.1 . Рассмотрим систему всего с двумя переменными:
x1 + x2 ≤ n, a1 ≤ x1 ≤ b1, a2 ≤ x2 ≤ b2, (*)
и систему без верхних ограничений на переменные:
x1 + x2 ≤ n, a1 ≤ x1, a2 ≤ x2. (**) Сравним графическое изображение области, в которой лежат решения системы (**) (рис. 12), и области, где находятся решения системы (*) (рис. 13). Как можно видеть, чтобы из области решений для
Рисунок 12: Множество решений неравенства x1 + x2 ≤ n с нижними ограничениями
на значения переменных.
системы (**) получить область для системы (*), нужно удалить из нее объединение областей решений систем
x1 + x2 ≤ n, b1 + 1 ≤ x1, a2 ≤ x2,
и
x1 + x2 ≤ n, a1 ≤ x1, b2 + 1 ≤ x2.
Пример 1.8.2 . Пусть дана система неравенств
x1 + x2 + x3 ≤ 30,
0 ≤ x1 ≤ 10, 5 ≤ x2 ≤ 12, 1 ≤ x3 ≤ 8.
Обозначим за A множество целочисленных решений исходной системы без учета верхних границ на значение переменных:
x1 + x2 + x3 ≤ 30,
0 ≤ x1, 5 ≤ x2, 1 ≤ x3.
(∗)
Рисунок 13: Множество решений неравенства x1 +x2 ≤ n с ограничениями на значения
переменных сверху и снизу.
Число целочисленных решений системы (∗) вычисляем по известной формуле:
|A| =
n + k − ): si
k
27 · 26 · 25
= 30 + 3 − 6 = 3
27
= 3
27!
= 3! · 24!
= = 2925.
6
Обознычим за Ai множество целочисленных решений исходной системы (∗), которые не удовлетворяют верхней границе исходной
системы на значение xi, i = 1, 3.
A1 : x1 + x2 + x3 ≤ 30,
11 ≤ x1, 5 ≤ x2, 1 ≤ x3.
A2 : x1 + x2 + x3 ≤ 30,
0 ≤ x1, 13 ≤ x2, 1 ≤ x3.
A3 : x1 + x2 + x3 ≤ 30,
0 ≤ x1, 5 ≤ x2, 9 ≤ x3.
Посчитаем мощности этих множеств.
|A1| =
30 + 3 − 17 =
3
16
= 3
16!
= 3! · 13!
16 · 15 · 14 = 560.
6
|A2| =
30 + 3 − 14 =
3
19
= 3
19!
= 3! · 16!
19 · 18 · 17 = 969.
6
|A3| =
30 + 3 − 14
3
= 969.
Также рассмотрим все возможные пересечения этих множеств и посчитаем их мощности.
A1 ∩ A2 :
x1 + x2 + x3 ≤ 30,
11 ≤ x1, 13 ≤ x2, 1 ≤ x3.
|A1 ∩ A2| =
30 + 3 − 25 =
3
8
= 3
8!
= 3! · 5!
8 · 7 · 6 = 56.
6
A1 ∩ A3 :
x1 + x2 + x3 ≤ 30,
11 ≤ x1, 5 ≤ x2, 9 ≤ x3.
30 + 3 − 25
|A1 ∩ A3| = 3
= 56.
A2 ∩ A3 :
x1 + x2 + x3 ≤ 30,
0 ≤ x1, 13 ≤ x2, 9 ≤ x3.
|A2 ∩ A3| =
30 + 3 − 22 =
3
11
= 3
11!
= 3! · 8!
11 · 10 · 9 = 165.
6
A1 ∩ A2 ∩ A3 :
x1 + x2 + x3 ≤ 30,
11 ≤ x1, 13 ≤ x2, 9 ≤ x3.
30 + 3 − 33
|A1 ∩ A2 ∩ A3| = 3
= 0.
Теперь количество целочисленных решений исходной системы можно получить по формуле:
|A| − |A1 ∪ A2 ∪ A3| = |A| − (|A1| + |A2| + |A3| − |A1 ∩ A2|−
− |A1 ∩ A3| − |A2 ∩ A3| + |A1 ∩ A2 ∩ A3|) = 2925 − 560 − 969−
− 969 + 56 + 56 + 165 = 704.
Рассмотрим теперь систему с ограничением на сумму переменных снизу:
x1 + x2 + · · · + xk ≥ n,
ai ≤ xi ≤ bi, i = 1, k.
Сделаем замену переменных yi = bi − xi. Тогда ограничения на значения переменных трансформируются следующим образом:
ai ≤ bi − yi ≤ bi ⇒ 0 ≤ yi ≤ bi − ai.
Подставим замену в неравенство для суммы переменных:
(b1 − y1) + (b2 − y2) + · · · + (bk − yk) ≥ n, y1 + y2 + · · · + yk ≤ b1 + b2 + · · · + bk − n.
Получили систему
k
y1 + y2 + · · · + yk ≤ \ bi − n,
i=1
0 ≤ yi ≤ bi − ai, i = 1, k,
которая может быть решена указанным выше для системы (25)-(26) способом.