
- •Содержание
- •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.7.2 . Набор (λ1, λ2, ..., λk), λi ∈ N, называется разбиением числа n ∈ N, если n = λ1 +λ2 +· · ·+λk, λ1 ≥ λ2 ≥ · · · ≥ λk > 0
Пример 1.7.2 . Существует 5 различных разбиений числа n = 4:
1 + 1 + 1 + 1
2 + 1 + 1
2 + 2
3 + 1
4
Замечание 1.7.1 . Можно использовать и другое определение разбиения натурального числа:
Определение 1.7.3 . Разбиением числа n ∈ N называется представление n в виде неупорядоченной суммы натуральных чисел.
Действительно, можно считать, что разбиение {λ1, λ2, ..., λk} - произвольный неупорядоченный набор, такой что n = λ1 + λ2 + · · · + λk.
Тогда расставив элементы λi в другом порядке мы получим то же самое разбиение. Чтобы получить возможность определять, имеем ли мы дело с двумя различными разбиениями, или с одним и тем же набором, но в с элементами следующими в другом порядке, удобно расставить элементы λi по убыванию. В таком случае, любому разбиению будет соответствовать упорядоченная последовательность, удовлетворяющая определению 1.7.2.
Обозначим pk(n) - число разбиений n на k частей.
Утверждение 1.7.4 . Пусть k, n ∈ N, k > 1 и n > k. Тогда
pk(n) = pk−1(n − 1) + pk(n − k). (18)
Доказательство. Пусть
Sk(n) = {(λ1, λ2, ..., λk) | n = λ1 + λ2 + · · · + λk,
λ1 ≥ λ2 ≥ · · · ≥ λk > 0, λi ∈ N, i = 1, k},
A = {(λ1, λ2, ..., λk) | (λ1, λ2, ..., λk) ∈ Sk(n), λk = 1},
B = {(λ1, λ2, ..., λk) | (λ1, λ2, ..., λk) ∈ Sk(n), λk ≥ 2}.
Тогда Sk(n) = A ∪ B и A ∩ B = ∅; |Sk(n)| = |A| + |B|.
|A| = |{(λ1, λ2, ..., λk−1) | λ1 + λ2 + · · · + λk−1 = n − 1,
λ1 ≥ λ2 ≥ · · · ≥ λk−1 > 0, λi ∈ N}| = |Sk−1(n − 1)| = pk−1(n − 1).
|B| = |{(λ1, λ2, ..., λk) | λ1 + λ2 + · · · + λk = n,
λ1 ≥ λ2 ≥ · · · ≥ λk > 1, λi ∈ N}| =
Сделаем замену µi = λi − 1, i = 1, k.
= |{(µ1, µ2, ..., µk) | µ1 + µ2 + · · · + µk = n − k,
µ1 ≥ µ2 ≥ · · · ≥ µk > 0, µi ∈ N}| = |Sk(n − k)| = pk(n − k).
|Sk(n)| = pk(n) = pk−1(n − 1) + pk(n − k).
D
Замечание 1.7.2 . Несмотря на схожесть определений вычисление величины pk(n) оказывается гораздо более сложной, чем dk(n). Если для числа разложений мы имеем явную формулу (15), то для числа разбиений мы получили только рекурентное выражение (18), которое, тем не менее, позволяет нам вычислить pk(n), пользуясь начальными
условиями: ∀n ∈ N pn(n) = 1, p1(n) = 1; если k > n, то pk(n) = 0.
n\k |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
· · · |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
· · · |
2 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
· · · |
3 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
· · · |
4 |
1 |
2 |
1 |
1 |
0 |
0 |
0 |
· · · |
5 |
1 |
2 |
2 |
1 |
1 |
0 |
0 |
· · · |
6 |
1 |
3 |
3 |
2 |
1 |
1 |
0 |
· · · |
7 |
1 |
3 |
4 |
3 |
2 |
1 |
1 |
· · · |

. . .
. . .
. . . . .
p2(3) = p1(2) + p2(1) = p1(2) = 1, p2(4) = p1(3) + p2(2) = 1 + 1 = 2, p3(4) = p2(3) + p3(1) = p2(3) = 1,
p2(5) = p1(4) + p2(3) = 1 + 1 = 2, p3(5) = p2(4) + p3(2) = p2(4) = 2,
p4(5) = p3(4) + p4(1) = p3(4) = 1, p2(6) = p1(5) + p2(4) = 1 + 2 = 3, p3(6) = p2(5) + p3(3) = 2 + 1 = 3, p4(6) = p3(5) + p4(2) = 2,
p5(6) = p4(5) + p5(1) = 1,
p2(7) = p1(6) + p2(5) = 1 + 2 = 3, p3(7) = p2(6) + p3(4) = 3 + 1 = 4, p4(7) = p3(6) + p4(3) = 3,
p5(7) = p4(6) + p5(2) = 2,
p6(7) = p5(6) + p6(1) = 1.