Дискретная математика
СУПЕР-ШПАРГАЛКА ПО ДИСКРЕТНОЙ МАТЕМАТИКЕ
(Для студентов МИФИ, МФТИ, МГУ на основе учебников С.В. Яблонского, Г.П. Гаврилова, В.Б. Алексеева, Н.П. Нефедова, О. Оре)
Краткий справочник символов и обозначений
| Символ | Значение | Примечание |
|---|---|---|
| $\mathbb{N}$ | Натуральные числа | $\{1, 2, 3, \dots\}$ (иногда включают 0). |
| $\mathbb{Z}$ | Целые числа | $\{\dots, -2, -1, 0, 1, 2, \dots\}$. |
| $\mathbb{Q}$ | Рациональные числа | |
| $\mathbb{R}$ | Вещественные числа | |
| $\mathbb{C}$ | Комплексные числа | |
| $\mathbb{B}$ | Булево множество | $\{0, 1\}$. |
| $\varnothing$ | Пустое множество | Не содержит элементов. |
| $A \subset B$ | Подмножество | $\forall x \in A \Rightarrow x \in B$. |
| $\mathcal{P}(A)$, $2^A$ | Булеан | Множество всех подмножеств $A$. |
| $\|A\|$ | Мощность конечного множества | Число элементов. |
| $\aleph_0$ | Мощность счётного множества | $\|\mathbb{N}\|$. |
| $\mathfrak{c}$ | Мощность континуума | $\|\mathbb{R}\| = 2^{\aleph_0}$. |
| $A \times B$ | Декартово произведение | $\{(a,b) \mid a \in A, b \in B\}$. |
| $R \subset A \times B$ | Бинарное отношение | |
| $f: A \to B$ | Функция (отображение) | Инъекция, сюръекция, биекция. |
| $\circ$ | Композиция | $(f \circ g)(x) = f(g(x))$. |
| $\land$, $\lor$, $\neg$, $\rightarrow$, $\leftrightarrow$, $\oplus$ | Логические связки | И, ИЛИ, НЕ, импликация, эквивалентность, XOR. |
| $\forall$, $\exists$, $\exists!$ | Кванторы | Всеобщности, существования, единственности. |
| $\vdash$ | Выводимость | $A \vdash B$: $B$ выводится из $A$. |
| $\models$ | Следование (семантическое) | $A \models B$: $B$ истинно во всех моделях $A$. |
| $P_2$ | Множество булевых функций | $\{f \mid f: \mathbb{B}^n \to \mathbb{B}\}$. |
| $G = (V, E)$ | Граф | $V$ — вершины, $E$ — рёбра. |
| $\deg(v)$ | Степень вершины | Число инцидентных рёбер. |
| $\chi(G)$ | Хроматическое число | Минимальное число цветов для раскраски. |
| $\varkappa(G)$ | Рёберная связность | |
| $K_n$ | Полный граф на $n$ вершинах | |
| $K_{m,n}$ | Полный двудольный граф | |
| $T(V, E)$ | Дерево | Связный граф без циклов. |
| $\binom{n}{k}$ | Биномиальный коэффициент | $C_n^k = \frac{n!}{k!(n-k)!}$. |
| $[x^n]F(x)$ | Коэффициент при $x^n$ | В производящей функции $F(x)$. |
| $\{^n_k\}$ | Число Стирлинга II рода | Число разбиений $n$-элементного множества на $k$ блоков. |
| $\left[^n_k\right]$ | Число Стирлинга I рода (без знака) | Число перестановок $n$ элементов с $k$ циклами. |
| $\varphi(n)$ | Функция Эйлера | Число натуральных $k \le n$, взаимно простых с $n$. |
| $a \equiv b \pmod{m}$ | Сравнение по модулю $m$ | $m \mid (a-b)$. |
| $\pmod{}$ | Скобка модуля |
1. МАТЕМАТИЧЕСКАЯ ЛОГИКА
1.1. Логика высказываний
Определения
- Высказывание: Повествовательное предложение, которое либо истинно (1), либо ложно (0). Закон исключённого третьего.
- Элементарное высказывание: Пропозициональная переменная $x$, $y$, $z$, $\dots$ — не разложимое на более простые.
- Формула (пропозициональная форма): Строится индуктивно:
- 0 и 1 — формулы;
- Пропозициональная переменная — формула;
- Если $A$ и $B$ — формулы, то $\neg A$, $A \land B$, $A \lor B$, $A \to B$, $A \leftrightarrow B$, $A \oplus B$ — формулы.
- Интерпретация: Приписывание каждой переменной истинностного значения.
- Тавтология (тождественно-истинная формула): Принимает значение 1 при всех интерпретациях. Обозначение: $\models A$.
- Противоречие (тождественно-ложная формула): Всегда 0.
- Выполнимая формула: Принимает значение 1 хотя бы при одной интерпретации.
- Логическое следование: $A \models B$, если $A \to B$ — тавтология.
Таблицы истинности логических связок
| $x$ | $y$ | $\neg x$ | $x \land y$ | $x \lor y$ | $x \to y$ | $x \leftrightarrow y$ | $x \oplus y$ | $x \mid y$ (НЕ-И, штрих Шеффера) | $x \downarrow y$ (НЕ-ИЛИ, стрелка Пирса) |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
Примечание: $\to$ — «материальная импликация». $x \to y$ ложно только при $x=1$, $y=0$. «Из лжи следует что угодно».
Приоритет логических связок (по убыванию)
$\neg$, $\land$, $\lor$, $\to$, $\leftrightarrow$, $\oplus$.
Основные законы логики высказываний (тождественно-истинные формулы)
| Закон | Формула |
|---|---|
| Исключённого третьего | $x \lor \neg x \equiv 1$ |
| Противоречия | $x \land \neg x \equiv 0$ |
| Двойного отрицания | $\neg\neg x \equiv x$ |
| Коммутативность $\land$ | $x \land y \equiv y \land x$ |
| Коммутативность $\lor$ | $x \lor y \equiv y \lor x$ |
| Ассоциативность | $(x \land y) \land z \equiv x \land (y \land z)$; аналогично для $\lor$ |
| Дистрибутивность $\land$ относительно $\lor$ | $x \land (y \lor z) \equiv (x \land y) \lor (x \land z)$ |
| Дистрибутивность $\lor$ относительно $\land$ | $x \lor (y \land z) \equiv (x \lor y) \land (x \lor z)$ |
| Законы де Моргана | $\neg(x \land y) \equiv \neg x \lor \neg y$; $\neg(x \lor y) \equiv \neg x \land \neg y$ |
| Идемпотентность | $x \land x \equiv x$, $x \lor x \equiv x$ |
| Поглощение | $x \lor (x \land y) \equiv x$; $x \land (x \lor y) \equiv x$ |
| Склеивание | $(x \land y) \lor (x \land \neg y) \equiv x$ |
| Контрапозиция | $x \to y \equiv \neg y \to \neg x$ |
| Выражение импликации | $x \to y \equiv \neg x \lor y$ |
| Выражение эквивалентности | $x \leftrightarrow y \equiv (x \to y) \land (y \to x) \equiv (\neg x \lor y) \land (x \lor \neg y)$ |
1.2. Логика предикатов
Определения
- Предикат: Предложение с переменными $P(x_1, \dots, x_n)$, которое становится высказыванием при подстановке конкретных значений. Пример: $P(x)$ = «$x > 0$», $x \in \mathbb{N}$.
- Область определения предиката: Множество $M$, из которого берутся значения переменных.
- Квантор всеобщности: $\forall x\, P(x)$ истинно $\Leftrightarrow$ $P(x)$ истинно для всех $x \in M$.
- Квантор существования: $\exists x\, P(x)$ истинно $\Leftrightarrow$ $P(x)$ истинно хотя бы для одного $x \in M$.
- Свободные и связанные переменные: Переменная, на которую «навешен» квантор — связана; иначе — свободна.
- Формула логики предикатов: Строится из атомарных формул (предикатов), связок и кванторов.
- Общезначимость: Формула истинна в любой интерпретации (на любой области $M$).
- Выполнимость: Существует интерпретация, в которой формула истинна.
Логические эквивалентности с кванторами
$$ \begin{aligned} &\neg(\forall x\, P(x)) \equiv \exists x\, \neg P(x) \\ &\neg(\exists x\, P(x)) \equiv \forall x\, \neg P(x) \\ &\forall x\, (P(x) \land Q(x)) \equiv (\forall x\, P(x)) \land (\forall x\, Q(x)) \\ &\exists x\, (P(x) \lor Q(x)) \equiv (\exists x\, P(x)) \lor (\exists x\, Q(x)) \\ &\forall x\, P(x) \lor \forall x\, Q(x) \models \forall x\, (P(x) \lor Q(x)) \quad \text{(обратное неверно)} \\ &\exists x\, (P(x) \land Q(x)) \models \exists x\, P(x) \land \exists x\, Q(x) \quad \text{(обратное неверно)} \end{aligned} $$
Выражение кванторов друг через друга
$$ \forall x\, P(x) \equiv \neg \exists x\, \neg P(x); \qquad \exists x\, P(x) \equiv \neg \forall x\, \neg P(x). $$
Типовые задачи и алгоритмы решения
► Задача 1. Доказательство равносильности формул. Методы:
- Таблица истинности — универсальный метод, работает для любого числа переменных (практично до 4-5 переменных).
- Равносильные преобразования — использование основных законов (де Моргана, дистрибутивность, поглощение).
- Метод от противного — предположить, что формулы не равносильны, найти контрпример.
Пример: Доказать $x \to y \equiv \neg x \lor y$. Таблица истинности: обе формулы дают $(1,1,0,1)$ — равносильны.
► Задача 2. Перевод с естественного языка на язык логики предикатов. Алгоритм:
- Выделить предметную область $M$.
- Определить предикаты для свойств и отношений.
- Расставить кванторы: «все» $\to \forall$, «существует» $\to \exists$, «существует единственный» $\to \exists!$.
- Критично: порядок кванторов! $\forall x \exists y$ и $\exists y \forall x$ — разные утверждения.
Пример: «Каждый студент сдал какой-то экзамен»: $\forall x (S(x) \to \exists y (E(y) \land P(x,y)))$. «Есть экзамен, который сдали все студенты»: $\exists y (E(y) \land \forall x (S(x) \to P(x,y)))$.
► Задача 3. Отрицание высказываний с кванторами. Алгоритм: «Проносим» отрицание внутрь:
- $\neg(\forall x\, P(x)) \equiv \exists x\, \neg P(x)$
- $\neg(\exists x\, P(x)) \equiv \forall x\, \neg P(x)$
- $\neg(P \land Q) \equiv \neg P \lor \neg Q$, $\neg(P \lor Q) \equiv \neg P \land \neg Q$
Пример: Отрицание «Все студенты знают хотя бы один язык программирования»: $\neg\forall s \exists l\, \text{Knows}(s,l) \equiv \exists s \forall l\, \neg\text{Knows}(s,l)$ — «Существует студент, не знающий ни одного языка».
Типовые ошибки
⚠ Ошибка 1. Импликация $A \to B$ истинна при ложном $A$. «Из лжи следует что угодно» (ex falso quodlibet). Студенты ожидают, что $0 \to 0$ должно быть ложно, но по таблице: $0 \to 0 = 1$. Пример: «Если $2\times2=5$, то я — Папа Римский» — формально истинное высказывание!
⚠ Ошибка 2. Путаница между $\to$ (импликация) и $\models$ (логическое следование). $A \to B$ — формула языка логики. $A \models B$ — метаутверждение: «$B$ истинно во всех моделях, где истинно $A$». $A \models B$ $\Leftrightarrow$ $(A \to B)$ — тавтология.
⚠ Ошибка 3. Порядок кванторов. $\forall x \exists y\, P(x,y)$ и $\exists y \forall x\, P(x,y)$ — разные утверждения! Первое: для каждого $x$ свой $y$. Второе: ОДИН $y$ для всех $x$. Пример: $\forall \text{человек } \exists \text{мать}$ — верно. $\exists \text{мать } \forall \text{человек}$ — неверно.
⚠ Ошибка 4. Неправильное отрицание импликации. $\neg(A \to B) \equiv A \land \neg B$, а не $A \to \neg B$. Импликация ложна ТОЛЬКО когда посылка истинна, а заключение ложно.
⚠ Ошибка 5. Контрапозиция vs обращение. $A \to B \equiv \neg B \to \neg A$ (контрапозиция, верно). Но $A \to B \not\equiv B \to A$ (обращение, неверно). Пример: «Если идёт дождь, то земля мокрая» $\not\equiv$ «Если земля мокрая, то идёт дождь».
Мнемонические правила
☞ Импликация как обещание: «Обещал — сделал» (1). «Обещал — не сделал» (0). «Не обещал — сделал» (1, приятный сюрприз). «Не обещал — не сделал» (1).
☞ Де Морган: «Отрицание меняет $\land$ на $\lor$ и наоборот». $\overline{AB} = \overline{A} \lor \overline{B}$ — «крыша ломается, знак переворачивается».
☞ Кванторы: $\forall$ — перевёрнутая A («All»). $\exists$ — перевёрнутая E («Exists»). При отрицании: $\neg\forall = \exists\neg$, $\neg\exists = \forall\neg$.
2.1. Множества и операции (углублённый раздел)
Базовые определения (аксиомы ZFC, операции) — см. шпаргалку по матанализу (analysis3.md). Здесь — расширенный раздел для дискретной математики.
Дополнительные операции и понятия
| Понятие | Определение | Обозначение / Формула |
|---|---|---|
| Разбиение множества | Семейство попарно непересекающихся непустых подмножеств, объединение которых — $A$ | $A = \bigsqcup_i A_i$ |
| Мощность множества | Число элементов (для конечных). Сравнение через биекции | $\|A\|$ |
| Счётное множество | Равномощно $\mathbb{N}$ | $\|\mathbb{N}\| = \aleph_0$ |
| Несчётное множество | Не равномощно $\mathbb{N}$ | $\|\mathbb{R}\| = \mathfrak{c}$ |
| Континуум-гипотеза | $\aleph_1 = 2^{\aleph_0}$? | Независима от ZFC |
| Диагональный метод Кантора | Доказательство несчётности $\mathbb{R}$ | |
| Индикаторная функция | $\mathbf{1}_A(x) = 1$ при $x \in A$, иначе $0$ | |
| Симметрическая разность | $A \triangle B = (A \setminus B) \cup (B \setminus A)$ | $\mathbf{1}_{A \triangle B} = \mathbf{1}_A \oplus \mathbf{1}_B$ |
Свойства мощности
- Теорема Кантора: $|\mathcal{P}(A)| > |A|$. Нет наибольшего кардинала.
- Теорема Кантора–Бернштейна: Если $|A| \le |B|$ и $|B| \le |A|$, то $|A| = |B|$.
- Счётность: $\mathbb{N}$, $\mathbb{Z}$, $\mathbb{Q}$ счётны; $\mathbb{R}$, $\mathbb{C}$, $\mathcal{P}(\mathbb{N})$ несчётны.
2.2. Бинарные отношения
Определения
- Бинарное отношение на $A$: Подмножество $R \subseteq A \times A$. Пишут $a R b$ вместо $(a, b) \in R$.
- Свойства отношений:
| Свойство | Определение | Диагональная запись |
|---|---|---|
| Рефлексивность | $\forall a \in A: a R a$ | $\Delta \subseteq R$ |
| Антирефлексивность | $\forall a \in A: \neg(a R a)$ | $\Delta \cap R = \varnothing$ |
| Симметричность | $a R b \Rightarrow b R a$ | $R = R^{-1}$ |
| Антисимметричность | $a R b \land b R a \Rightarrow a = b$ | $R \cap R^{-1} \subseteq \Delta$ |
| Транзитивность | $a R b \land b R c \Rightarrow a R c$ | $R \circ R \subseteq R$ |
| Связность (полнота) | $\forall a \neq b: a R b \lor b R a$ | $R \cup R^{-1} = A \times A$ |
- Типы отношений:
| Тип | Свойства | Пример |
|---|---|---|
| Эквивалентность | Рефлексивно, симметрично, транзитивно | Равенство, «учится в одной группе» |
| Частичный порядок | Рефлексивно, антисимметрично, транзитивно | $\le$ на $\mathbb{N}$, $\subseteq$ на $\mathcal{P}(A)$ |
| Строгий порядок | Антирефлексивно, транзитивно (следовательно, антисимметрично) | $<$ на $\mathbb{R}$ |
| Линейный порядок | Частичный порядок + связность | $\le$ на $\mathbb{R}$ |
| Предпорядок (квазипорядок) | Рефлексивно, транзитивно | «$\|x\| \le \|y\|$» |
| Толерантность | Рефлексивно, симметрично | «похожи», «пересекаются» |
Отношение эквивалентности и разбиения
Теорема: Отношение эквивалентности на $A$ задаёт разбиение $A$ на классы эквивалентности $[a] = \{b \in A \mid a R b\}$.
Фактор-множество: $A/R = \{[a] \mid a \in A\}$ — множество всех классов эквивалентности.
Замыкания отношений
| Замыкание | Операция | Результат |
|---|---|---|
| Рефлексивное | $R \cup \Delta$ | Наименьшее рефлексивное отношение, содержащее $R$ |
| Симметричное | $R \cup R^{-1}$ | Наименьшее симметричное |
| Транзитивное | $R^+ = \bigcup_{n \ge 1} R^n$ | Наименьшее транзитивное |
| Рефлексивно-транзитивное | $R^* = \bigcup_{n \ge 0} R^n$ |
Типовые задачи
► Задача 1. Доказательство свойств отношения. Алгоритм: По очереди проверяем рефлексивность, симметричность, транзитивность.
- Рефлексивность: $\forall a: (a,a) \in R$ — все ли пары $(a,a)$ есть?
- Симметричность: если $(a,b) \in R$, то $(b,a) \in R$? Проверить все пары.
- Транзитивность: если $(a,b) \in R$ и $(b,c) \in R$, то $(a,c) \in R$? Самая трудоёмкая проверка.
Контрпример для транзитивности: Достаточно найти ОДНУ тройку $a,b,c$ такую, что $(a,b)$ и $(b,c)$ есть, а $(a,c)$ — нет.
► Задача 2. Классы эквивалентности. Алгоритм:
- Убедиться, что отношение — эквивалентность.
- Взять произвольный элемент $a$, найти все $b: a R b$ — это класс $[a]$.
- Взять элемент не из найденных классов, повторить.
Пример: Отношение «сравнимости по модулю 3» на $\mathbb{Z}$. Классы: $[0] = \{..., -6, -3, 0, 3, 6, ...\}$, $[1]$, $[2]$. Всего 3 класса = $\mathbb{Z}_3$.
Типовые ошибки
⚠ Ошибка 1. Симметричность + транзитивность $\not\Rightarrow$ рефлексивность. Контрпример: отношение «быть братом» на множестве людей. Симметрично, транзитивно (среди братьев), но не рефлексивно (человек не брат самому себе).
⚠ Ошибка 2. Антисимметричность $\neq$ отсутствие симметричности. $a R b \land b R a \Rightarrow a = b$ — это не значит, что $a R b \Rightarrow \neg(b R a)$. В частичном порядке ($\le$) может быть $a \le b$ и $b \le a$ одновременно — только если $a=b$.
⚠ Ошибка 3. Транзитивное замыкание — все пути произвольной длины. $R^+ = \bigcup_{n \ge 1} R^n$, а не только $R^2$. Для проверки принадлежности $(a,b)$ к $R^+$ нужно найти цепочку $(a, c_1), (c_1, c_2), \dots, (c_k, b) \in R$ произвольной длины.
⚠ Ошибка 4. Путаница между типами отображений. Инъекция = «разные прообразы $\to$ разные образы». Сюръекция = «каждый элемент $B$ имеет прообраз». Биекция = и то, и другое. $f: \mathbb{R} \to \mathbb{R}$, $f(x)=x^2$ — не инъекция ($f(-2)=f(2)=4$) и не сюръекция (нет прообраза для $-1$).
2.3. Функции и отображения
Определения
- Функция $f: A \to B$: Отношение $f \subseteq A \times B$, где $\forall a \in A\ \exists! b \in B: (a, b) \in f$.
- Инъекция: $a_1 \neq a_2 \Rightarrow f(a_1) \neq f(a_2)$. Разные прообразы $\to$ разные образы.
- Сюръекция: $\forall b \in B\ \exists a \in A: f(a) = b$. Образ совпадает с $B$.
- Биекция: Инъекция + сюръекция. Взаимно-однозначное соответствие.
- Обратная функция $f^{-1}$: Существует $\Leftrightarrow$ $f$ — биекция.
- Композиция: $(g \circ f)(x) = g(f(x))$. $g \circ f$ определена $\Leftrightarrow$ $\operatorname{Im} f \subseteq \operatorname{Dom} g$.
- Характеристическая функция множества $A \subseteq U$: $\chi_A(x) = 1$ при $x \in A$, $0$ при $x \notin A$.
Свойства композиции
- Ассоциативность: $(h \circ g) \circ f = h \circ (g \circ f)$.
- Не коммутативна (в общем случае).
- $(g \circ f)^{-1} = f^{-1} \circ g^{-1}$, если $f$, $g$ биективны.
- Композиция инъекций — инъекция; сюръекций — сюръекция; биекций — биекция.
3. КОМБИНАТОРИКА (РАСШИРЕННЫЙ РАЗДЕЛ)
Базовые формулы (факториал, $A_n^k$, $C_n^k$, $P_n$, размещения/сочетания с повторениями, полиномиальная теорема, формула Стирлинга, свёртка Вандермонда, треугольник Паскаля) — см. шпаргалку по терверу (terver.md, раздел 1). Здесь — расширенный раздел.
3.1. Принципы и правила
Определения и методы
- Принцип Дирихле: Если $n$ объектов размещены по $m$ ящикам и $n > m$, то хотя бы в одном ящике более одного объекта. Обобщение: если $n > k m$, то в каком-то ящике $\ge k+1$ объектов.
- Правило включения-исключения (полная форма): $$ \left|\bigcup_{i=1}^n A_i\right| = \sum_{k=1}^n (-1)^{k-1} \sum_{1 \le i_1 < \dots < i_k \le n} |A_{i_1} \cap \dots \cap A_{i_k}|. $$
- Число элементов, не принадлежащих ни одному $A_i$:
$$
|U \setminus \bigcup A_i| = |U| - \sum_i |A_i| + \sum_{i
- Задача о беспорядках (субфакториал $!n$): Число перестановок $n$ элементов, где ни один не стоит на своём месте: $$ !n = n! \sum_{k=0}^n \frac{(-1)^k}{k!} = \left\lfloor \frac{n!}{e} + \frac{1}{2} \right\rfloor. $$ Рекуррентно: $!n = (n-1)(!(n-1) + !(n-2))$, $!0 = 1$, $!1 = 0$.
3.2. Числа Стирлинга и разбиения
Определения
- Число Стирлинга II рода $\{^n_k\}$: Число способов разбить $n$-элементное множество на $k$ непустых непересекающихся подмножеств (блоков).
- Число Стирлинга I рода (без знака) $\left[^n_k\right]$: Число перестановок $n$ элементов, имеющих ровно $k$ циклов.
- Число Белла $B_n$: Общее число всех разбиений $n$-элементного множества: $B_n = \sum_{k=1}^n \left\{^n_k\right\}$.
- Число Каталана $C_n$: $C_n = \frac{1}{n+1} \binom{2n}{n}$.
Рекуррентные соотношения и формулы
| Числа | Рекуррентное соотношение | $n=0$ | $n=1$ | $n=2$ | $n=3$ | $n=4$ | $n=5$ |
|---|---|---|---|---|---|---|---|
| Стирлинга II рода | $\{^n_k\} = k \{^{n-1}_{\;k}\} + \{^{n-1}_{k-1}\}$ | — | $\{^1_1\}=1$ | $\{^2_1\}=1$, $\{^2_2\}=1$ | $\{^3_1\}=1$, $\{^3_2\}=3$, $\{^3_3\}=1$ | $\{^4_1\}=1$, $\{^4_2\}=7$, $\{^4_3\}=6$, $\{^4_4\}=1$ | — |
| Белла | $B_{n+1} = \sum_{k=0}^n \binom{n}{k} B_k$ | $1$ | $1$ | $2$ | $5$ | $15$ | $52$ |
| Каталана | $C_{n+1} = \sum_{k=0}^n C_k C_{n-k}$ | $1$ | $1$ | $2$ | $5$ | $14$ | $42$ |
Числа Стирлинга I рода (рекуррентно)
$$ \left[^n_k\right] = (n-1) \left[^{n-1}_{\;\;k}\right] + \left[^{n-1}_{k-1}\right], \quad \left[^n_0\right] = 0\ (n \ge 1), \quad \left[^0_0\right] = 1. $$
3.3. Производящие функции
Определения
- Обычная производящая функция (ОПФ): Для последовательности $\{a_n\}_{n=0}^\infty$: $$ A(x) = \sum_{n=0}^\infty a_n x^n. $$
- Экспоненциальная производящая функция (ЭПФ): $E(x) = \sum_{n=0}^\infty a_n \frac{x^n}{n!}$.
- Коэффициент: $a_n = [x^n] A(x)$ — оператор взятия коэффициента при $x^n$.
Таблица основных производящих функций
| Последовательность $\{a_n\}$ | ОПФ $A(x)$ | ЭПФ $E(x)$ |
|---|---|---|
| $a_n = 1$ | $\frac{1}{1-x}$ | $e^x$ |
| $a_n = n$ | $\frac{x}{(1-x)^2}$ | $x e^x$ |
| $a_n = \binom{m}{n}$ | $(1+x)^m$ | — |
| $a_n = \binom{m+n-1}{n}$ | $\frac{1}{(1-x)^m}$ | — |
| $a_n = c^n$ | $\frac{1}{1-cx}$ | $e^{cx}$ |
| $a_n = \frac{1}{n!}$ | — | $e^x$ |
| Числа Фибоначчи $F_n$ | $\frac{x}{1-x-x^2}$ | — |
| Числа Каталана $C_n$ | $\frac{1-\sqrt{1-4x}}{2x}$ | — |
| Числа Белла $B_n$ | — | $e^{e^x-1}$ |
| Числа Стирлинга II $\{^n_k\}$ ($k$ фикс.) | $\frac{x^k}{(1-x)(1-2x)\cdots(1-kx)}$ | $\frac{(e^x-1)^k}{k!}$ |
Операции с производящими функциями
| Операция | Последовательность | ОПФ |
|---|---|---|
| Сдвиг вправо ($m$ нулей в начале) | $0, \dots, 0, a_0, a_1, \dots$ | $x^m A(x)$ |
| Сдвиг влево | $a_1, a_2, \dots$ | $\frac{A(x) - a_0}{x}$ |
| Умножение на $n$ | $n a_n$ | $x A'(x)$ |
| Свёртка | $c_n = \sum_{k=0}^n a_k b_{n-k}$ | $C(x) = A(x) B(x)$ |
| Частичные суммы | $s_n = \sum_{k=0}^n a_k$ | $S(x) = \frac{A(x)}{1-x}$ |
3.4. Рекуррентные соотношения
Методы решения линейных рекуррент
Общий вид: $a_n + c_1 a_{n-1} + c_2 a_{n-2} + \dots + c_k a_{n-k} = f(n)$.
Характеристическое уравнение: $\lambda^k + c_1 \lambda^{k-1} + \dots + c_k = 0$.
Однородный случай ($f(n) = 0$)
Если корни $\lambda_1, \dots, \lambda_k$ характеристического уравнения различны: $$ a_n^{\text{(общ. однор.)}} = C_1 \lambda_1^n + C_2 \lambda_2^n + \dots + C_k \lambda_k^n. $$
Если корень $\lambda$ имеет кратность $r$, ему соответствуют слагаемые: $(C_0 + C_1 n + \dots + C_{r-1} n^{r-1}) \lambda^n$.
Неоднородный случай
Частное решение ищется в виде, подобном правой части:
- $f(n) = P_m(n)$ (многочлен степени $m$) $\to$ ищем $Q_m(n)$;
- $f(n) = b \cdot d^n$ $\to$ ищем $C \cdot d^n$ (умножаем на $n^s$, где $s$ — кратность $d$ как корня характеристического уравнения);
- $f(n) = b \cos\omega n$ или $b \sin\omega n$ $\to$ ищем $C_1 \cos\omega n + C_2 \sin\omega n$.
Общее решение: $a_n = a_n^{\text{(общ. однор.)}} + a_n^{\text{(частн.)}}$.
Таблица классических рекуррент
| Последовательность | Рекуррента | Явная формула |
|---|---|---|
| Фибоначчи | $F_n = F_{n-1} + F_{n-2}$, $F_0=0$, $F_1=1$ | $F_n = \frac{\varphi^n - (-\varphi)^{-n}}{\sqrt{5}}$, $\varphi = \frac{1+\sqrt{5}}{2}$ |
| Числа Каталана | $C_{n+1} = \sum_{k=0}^n C_k C_{n-k}$ | $C_n = \frac{1}{n+1}\binom{2n}{n}$ |
4. БУЛЕВЫ ФУНКЦИИ И БУЛЕВА АЛГЕБРА
4.1. Булевы функции
Определения
- Булева функция: Отображение $f: \mathbb{B}^n \to \mathbb{B}$, $\mathbb{B} = \{0, 1\}$.
- $P_2$: Множество всех булевых функций от любого числа переменных.
- $P_2(n)$: Множество булевых функций от $n$ переменных. $|P_2(n)| = 2^{2^n}$.
- Существенные и фиктивные переменные: $x_i$ — фиктивная, если $f_{x_i=0} = f_{x_i=1}$.
- Таблица истинности: Перечисление всех $2^n$ наборов значений переменных в стандартном порядке (лексикографическом).
- Формула: Выражение, построенное из переменных, констант 0,1, и операций над $P_2$.
- Суперпозиция (композиция): Подстановка функций в функцию.
- Операция замыкания: $[K]$ — множество всех функций, получаемых из $K$ суперпозициями (и переименованием переменных).
- Замкнутый класс: $[K] = K$.
- Полная система: $[K] = P_2$ (класс $K$ порождает все булевы функции).
- Базис: Полная система, из которой нельзя удалить ни одной функции без потери полноты.
Элементарные булевы функции
| Название | Обозначение | Таблица (для $n=1,2$) |
|---|---|---|
| Константа 0 | $0$ | $0$ |
| Константа 1 | $1$ | $1$ |
| Тождественная | $x$ | $0, 1$ |
| Отрицание | $\overline{x}$ | $1, 0$ |
| Конъюнкция | $x \land y$, $xy$, $x \& y$ | $0,0,0,1$ |
| Дизъюнкция | $x \lor y$ | $0,1,1,1$ |
| Импликация | $x \to y$ | $1,1,0,1$ |
| Эквивалентность | $x \sim y$, $x \leftrightarrow y$ | $1,0,0,1$ |
| Сложение по модулю 2 (XOR) | $x \oplus y$ | $0,1,1,0$ |
| Стрелка Пирса (НЕ-ИЛИ) | $x \downarrow y = \overline{x \lor y}$ | $1,0,0,0$ |
| Штрих Шеффера (НЕ-И) | $x \mid y = \overline{x \land y}$ | $1,1,1,0$ |
4.2. Нормальные формы
Определения
- Элементарная конъюнкция (минтерм): Конъюнкция литералов (переменных или их отрицаний), где каждая переменная входит не более одного раза.
- Дизъюнктивная нормальная форма (ДНФ): Дизъюнкция элементарных конъюнкций.
- Совершенная ДНФ (СДНФ): Каждая элементарная конъюнкция содержит все $n$ переменных.
- Элементарная дизъюнкция (макстерм): Дизъюнкция литералов.
- Конъюнктивная нормальная форма (КНФ): Конъюнкция элементарных дизъюнкций.
- Совершенная КНФ (СКНФ): Каждая элементарная дизъюнкция содержит все $n$ переменных.
Построение СДНФ и СКНФ по таблице истинности
СДНФ: Для каждого набора, где $f = 1$, строим конъюнкцию литералов: $x_i$, если $x_i = 1$, и $\overline{x}_i$, если $x_i = 0$. Все конъюнкции соединяем $\lor$.
СКНФ: Для каждого набора, где $f = 0$, строим дизъюнкцию литералов: $\overline{x}_i$, если $x_i = 1$, и $x_i$, если $x_i = 0$. Все дизъюнкции соединяем $\land$.
Алгоритм минимизации: метод Куайна–Мак-Класки
- Строим СДНФ.
- Склеиваем конъюнкции, отличающиеся ровно в одной переменной (одна с $x_i$, другая с $\overline{x}_i$).
- Повторяем склеивание, пока возможно.
- Строим таблицу покрытия: строки — исходные конституенты, столбцы — простые импликанты.
- Находим минимальное покрытие (ядро + добираем).
Карты Карно (диаграммы Вейча)
Визуальный метод минимизации для $n \le 4$ (иногда 5) переменных. Принцип: соседние клетки отличаются ровно в одной переменной. Склеиваем прямоугольники размером $2^k$ клеток, содержащие только единицы. Получаем минимальную ДНФ.
Порядок строк/столбцов в карте Карно (код Грея):
| $n=3$: $x_1x_2 \setminus x_3$ | 00 | 01 | 11 | 10 |
|---|---|---|---|---|
| 0 | ||||
| 1 |
| $n=4$: $x_1x_2 \setminus x_3x_4$ | 00 | 01 | 11 | 10 |
|---|---|---|---|---|
| 00 | ||||
| 01 | ||||
| 11 | ||||
| 10 |
4.3. Замкнутые классы и теорема Поста
Определения и обозначения замкнутых классов
| Класс | Обозначение | Определение | Критерий принадлежности |
|---|---|---|---|
| $T_0$ — сохраняющие 0 | $f(0,\dots,0) = 0$ | Функция равна 0 на нулевом наборе | $\checkmark$: $0, x, x \land y, x \lor y, x \oplus y$. $\times$: $1, \overline{x}, x \to y$ |
| $T_1$ — сохраняющие 1 | $f(1,\dots,1) = 1$ | Функция равна 1 на единичном наборе | $\checkmark$: $1, x, x \land y, x \lor y$. $\times$: $0, \overline{x}, x \oplus y$ |
| $S$ — самодвойственные | $f(\overline{x}_1,\dots,\overline{x}_n) = \overline{f(x_1,\dots,x_n)}$ | Функция антисимметрична относительно замены $0 \leftrightarrow 1$ на аргументах и результате | $\checkmark$: $x, \overline{x}$. $\times$: $0, 1, x \land y, x \lor y$ |
| $M$ — монотонные | $a \preceq b \Rightarrow f(a) \le f(b)$ | $a \preceq b$ — покоординатное сравнение ($a_i \le b_i\ \forall i$) | $\checkmark$: $0, 1, x, x \land y, x \lor y$. $\times$: $\overline{x}, x \to y, x \oplus y$ |
| $L$ — линейные | $f = c_0 \oplus c_1 x_1 \oplus \dots \oplus c_n x_n$ | Представима полиномом Жегалкина степени $\le 1$ | $\checkmark$: $0, 1, x, \overline{x}, x \oplus y$. $\times$: $x \land y, x \lor y$ |
Теорема Поста (критерий полноты)
Система булевых функций $K$ полна ($[K] = P_2$) $\Leftrightarrow$ $K$ не содержится целиком ни в одном из пяти замкнутых классов: $$ K \not\subseteq T_0,\ K \not\subseteq T_1,\ K \not\subseteq S,\ K \not\subseteq M,\ K \not\subseteq L. $$
Проверка полноты: протокол (алгоритм)
- Для каждой $f \in K$ проверяем принадлежность классам $T_0, T_1, S, M, L$.
- Строим таблицу «функция $\times$ класс».
- Если каждый столбец $T_0, T_1, S, M, L$ содержит хотя бы один «$\times$» (не принадлежит) — система полна.
- Для поиска базиса: проверяем все собственные подсистемы на полноту.
Предполные классы
Это в точности пять классов Поста: $T_0, T_1, S, M, L$. Любой собственный замкнутый класс содержится хотя бы в одном из них.
4.4. Полином Жегалкина (алгебраическая нормальная форма)
Определение
Полином Жегалкина — представление булевой функции в виде суммы по модулю 2 конъюнкций (без отрицаний):
$$
f(x_1, \dots, x_n) = a_0 \oplus \bigoplus_{i} a_i x_i \oplus \bigoplus_{i Функция линейна $\Leftrightarrow$ её полином Жегалкина имеет степень $\le 1$. Это критерий принадлежности классу $L$. ⚠ Ошибка 1. Проверка монотонности: просмотр не всех пар. Для проверки $a \preceq b$ нужно перебрать ВСЕ наборы, где $a$ предшествует $b$ (покоординатно не больше). Если хотя бы для одной такой пары $f(a) > f(b)$ — функция не монотонна. ⚠ Ошибка 2. Линейная функция: забывают константу. $f(x) = x_1 \oplus 1$ — линейна! Полином Жегалкина: $x_1 \oplus 1$ (степень 1). Константа допустима в линейной функции. ⚠ Ошибка 3. Самодвойственность: ошибка в построении двойственной. $f^*(x_1,\dots,x_n) = \overline{f(\overline{x}_1,\dots,\overline{x}_n)}$. Студенты часто берут отрицание ТОЛЬКО результата или ТОЛЬКО аргументов, забывая про второе. ⚠ Ошибка 4. Полнота системы: достаточно найти представителя. Если функция НЕ принадлежит классу $K$, то в столбце $K$ ставим «$\times$». Если в каждом из 5 столбцов есть хотя бы один «$\times$» — система полна. Не нужно проверять принадлежность всех функций ко всем классам. ⚠ Ошибка 5. СДНФ vs СКНФ: путают построение. СДНФ: берём наборы где $f=1$, строим конъюнкции, переменная $0$ входит с отрицанием. СКНФ: берём наборы где $f=0$, строим дизъюнкции, переменная $1$ входит с отрицанием. Мнемоника: «ищем противоположное значение переменной для включения в элементарную форму». ⚠ Ошибка 6. Полином Жегалкина: забывают $a_0$. При построении полинома Жегалкина нужно найти ВСЕ коэффициенты $a_I$, включая $a_0$ (свободный член). Подстановка нулевого набора даёт $a_0 = f(0,\dots,0)$. ☞ Пять классов Поста (для запоминания): «ТоТаСамМоЛ» — $T_0$, $T_1$, $S$ (Self-dual), $M$ (Monotone), $L$ (Linear). Система полна, если НЕ содержится ни в одном из них. ☞ Проверка $T_0$ и $T_1$: «$T_0$ — функция сохраняет 0»: подставить все нули, результат должен быть 0. «$T_1$ — функция сохраняет 1»: подставить все единицы, результат должен быть 1. ☞ Карта Карно: порядок переменных — код Грея (00, 01, 11, 10). Соседние клетки отличаются ровно в одной переменной. Можно склеивать прямоугольники $1\times2^k$, $2^k\times1$, $2^k\times2^m$ клеток. ☞ Штрих Шеффера $x \mid y$ — универсальный базис. Из одной этой функции можно построить все булевы функции. $\neg x = x \mid x$, $x \land y = \neg(x \mid y) = (x \mid y) \mid (x \mid y)$. Схемотехника: булевы функции — основа проектирования логических схем процессоров и микроконтроллеров. Минимизация ДНФ снижает число логических вентилей. Релейно-контактные схемы: реализация булевых функций на реле. SQL: WHERE-условия — булевы выражения. Условная компиляция: препроцессорные условия. Базы знаний: логический вывод на основе булевых функций. $$
\sum_{v \in V} \deg(v) = 2|E|.
$$ Следствие: Число вершин нечётной степени в графе чётно. Критерии дерева (для графа с $n$ вершинами следующие утверждения эквивалентны): Остов (остовное дерево, spanning tree): Остовный подграф (включает все $n$ вершин), являющийся деревом. Каждый связный граф имеет хотя бы один остов. Число остовных деревьев (теорема Кирхгофа, матричная теорема о деревьях):
$$
\tau(G) = \frac{1}{n} \prod_{i=1}^{n-1} \lambda_i,
$$
где $\lambda_i$ — ненулевые собственные значения матрицы Кирхгофа (лапласиана) $L = D - A$, или любой алгебраический кофактор $L$. Эйлеров цикл: Цикл, содержащий все рёбра графа по одному разу. Теорема Эйлера: Связный граф эйлеров (содержит эйлеров цикл) $\Leftrightarrow$ все вершины имеют чётную степень. Эйлерова цепь (путь): Цепь, содержащая все рёбра. Существует $\Leftrightarrow$ ровно $0$ или $2$ вершины имеют нечётную степень. Гамильтонов цикл: Простой цикл, проходящий через все вершины. Достаточные условия: Примечание: Задача распознавания гамильтоновости — NP-полна. Для связного плоского графа с $n$ вершинами, $m$ рёбрами и $f$ гранями:
$$
n - m + f = 2.
$$ Следствия для любого планарного графа (без петель и кратных рёбер, $n \ge 3$): Граф планарен $\Leftrightarrow$ он не содержит подграфов, гомеоморфных $K_5$ или $K_{3,3}$. Гомеоморфность: возможность получить один граф из другого подразбиением рёбер (вставкой вершин степени 2). Граф планарен $\Leftrightarrow$ он не содержит миноров $K_5$ или $K_{3,3}$. (Минор получается удалением вершин/рёбер и стягиванием рёбер.) Рекуррентное соотношение (удаление–стягивание):
$$
P_G(k) = P_{G-e}(k) - P_{G/e}(k),
$$
где $G-e$ — удаление ребра, $G/e$ — стягивание (склеивание концов). Для графа из $n$ изолированных вершин: $P(k) = k^n$. В двудольном графе размер наибольшего паросочетания равен размеру минимального вершинного покрытия: $\nu(G) = \tau(G)$. Для двудольного графа $G = (X \sqcup Y, E)$ совершенное паросочетание, покрывающее $X$, существует $\Leftrightarrow$ для любого $S \subseteq X$: $|N(S)| \ge |S|$, где $N(S)$ — множество соседей вершин из $S$. Максимальная величина потока из $s$ в $t$ равна минимальной пропускной способности разреза:
$$
\max_{f} \|f\| = \min_{(S,T)} c(S, T).
$$ Для графа с неотрицательными весами. Время: $O((|V|+|E|)\log |V|)$ с двоичной кучей. Идея: на каждом шаге выбираем непосещённую вершину с минимальной оценкой расстояния, релаксируем рёбра. Динамическое программирование. $d_{ij}^{(0)} = w_{ij}$ (вес ребра, $\infty$ если нет). Итерация:
$$
d_{ij}^{(k)} = \min(d_{ij}^{(k-1)}, d_{ik}^{(k-1)} + d_{kj}^{(k-1)}).
$$
Время: $O(|V|^3)$. Кратчайшие пути при любых (в т.ч. отрицательных) весах, но без циклов отрицательного веса. Время: $O(|V| \cdot |E|)$. Начинаем с одной вершины. На каждом шаге добавляем минимальное ребро, соединяющее дерево с новой вершиной. Время: $O(|E| \log |V|)$ с кучей. ► Задача 1. Проверка графа на эйлеровость.
Алгоритм: Пример: Граф «конверт» (5 вершин). Степени: $3,3,3,2,1$ — три вершины нечётной степени, не эйлеров. ► Задача 2. Построение минимального остовного дерева (Крускал).
Алгоритм: Пример: Граф из 4 городов с расстояниями. Остовное дерево даст минимальную суммарную длину дорог. ► Задача 3. Проверка двудольности.
Алгоритм (BFS/DFS): Пример: Любое дерево двудольно. $K_3$ (треугольник) — не двудольный. $K_{2,3}$ — двудольный. ► Задача 4. Поиск кратчайшего пути (Дейкстра).
Алгоритм: Важно: Работает только для неотрицательных весов! ⚠ Ошибка 1. Эйлеров ≠ Гамильтонов. Эйлеров цикл — проход по всем РЁБРАМ по одному разу. Гамильтонов — по всем ВЕРШИНАМ. Эйлеровость проверяется за $O(|V|)$, гамильтоновость — NP-полная задача. ⚠ Ошибка 2. Дерево: путают количество рёбер. В дереве с $n$ вершинами ровно $n-1$ рёбер. Лес из $k$ компонент-деревьев на $n$ вершинах: $n-k$ рёбер. ⚠ Ошибка 3. Планарность: забывают проверять $m > 3n-6$. Это НЕОБХОДИМОЕ условие. Если $m \le 3n-6$, это НЕ достаточно для планарности. Нужен критерий Понтрягина–Куратовского. ⚠ Ошибка 4. Формула Эйлера только для СВЯЗНЫХ плоских графов. $n - m + f = 2$ требует связности. Для графа с $c$ компонентами: $n - m + f = 1 + c$. ⚠ Ошибка 5. Дейкстра и отрицательные веса. Алгоритм Дейкстры даёт НЕВЕРНЫЙ результат при отрицательных весах! Для графов с отрицательными весами используйте Форда–Беллмана ($O(|V|\cdot|E|)$). ⚠ Ошибка 6. Хроматическое число полного графа. $\chi(K_n) = n$, а не $2$. Полный граф требует $n$ цветов — каждая вершина должна быть своего цвета. ⚠ Ошибка 7. Совершенное паросочетание требует чётного числа вершин. В графе с нечётным числом вершин совершенного паросочетания не существует по определению. ☞ Эйлеров цикл — «все степени чётны». Представьте: чтобы войти и выйти из вершины, нужно чётное число рёбер при этой вершине (одно — войти, другое — выйти). ☞ Лемма о рукопожатиях: «Сумма степеней = удвоенному числу рёбер». Каждое ребро учитывается дважды — по одному разу на каждом конце. ☞ Формула Эйлера $n - m + f = 2$: «Вершины минус рёбра плюс грани равно два». Для запоминания: у тетраэдра (треугольной пирамиды) $n=4$, $m=6$, $f=4$: $4-6+4=2$. ☞ Дважды линейчатые поверхности в графике: $K_5$ и $K_{3,3}$ — два «запрещённых» подграфа для планарности. Запомнить: «пять точек — все соединены» и «три на три — все соединены между долями». GPS-навигация: алгоритм Дейкстры/А* ($A^*$) для построения маршрутов. Социальные сети: граф друзей, компоненты связности, центральность. Интернет: маршрутизация (протоколы OSPF, RIP — алгоритмы на графах). Проектирование сетей: минимальное остовное дерево для прокладки кабеля. Расписания: топологическая сортировка для упорядочивания задач с зависимостями. Раскраска карт: планирование частот в сотовой связи (чтобы соседние вышки не мешали друг другу). $$
\gcd(a, b) = \gcd(b, a \bmod b);
$$
итеративно, пока $b \neq 0$. Время: $O(\log \min(a,b))$. Находит $x, y \in \mathbb{Z}$ такие, что $ax + by = \gcd(a, b)$ (соотношение Безу). Позволяет найти обратный элемент в $\mathbb{Z}_m^*$: если $\gcd(a, m) = 1$, то $a^{-1} \equiv x \pmod{m}$. Число натуральных $k \le n$, взаимно простых с $n$. Свойства: Если $p$ — простое число и $p \nmid a$, то:
$$
a^{p-1} \equiv 1 \pmod{p}.
$$ Если $\gcd(a, m) = 1$, то:
$$
a^{\varphi(m)} \equiv 1 \pmod{m}.
$$ Если $m_1, \dots, m_k$ попарно взаимно просты, то для любых $a_1, \dots, a_k$ система сравнений
$$
x \equiv a_1 \pmod{m_1},\ \dots,\ x \equiv a_k \pmod{m_k}
$$
имеет единственное решение по модулю $M = m_1 \cdots m_k$:
$$
x \equiv \sum_{i=1}^k a_i M_i y_i \pmod{M},
$$
где $M_i = M/m_i$, а $y_i = M_i^{-1} \pmod{m_i}$. Любое $n > 1$ однозначно (с точностью до порядка) разлагается в произведение простых чисел: $n = p_1^{\alpha_1} \cdots p_k^{\alpha_k}$. Корректность: $m^{ed} \equiv m \pmod{n}$ по теореме Эйлера. ► Задача 1. Вычисление НОД (алгоритм Евклида).
Алгоритм: Пример: $\gcd(48, 18)$. $48 \bmod 18 = 12$, $(18, 12)$. $18 \bmod 12 = 6$, $(12, 6)$. $12 \bmod 6 = 0$ → $\gcd = 6$. ► Задача 2. Нахождение обратного элемента в $\mathbb{Z}_m^*$ (расширенный алгоритм Евклида).
Алгоритм: Пример: Найти $7^{-1} \pmod{40}$. Расширенный алгоритм: $7 \cdot 23 + 40 \cdot (-4) = 1$. $7^{-1} \equiv 23 \pmod{40}$. ► Задача 3. Решение системы сравнений (Китайская теорема об остатках).
Алгоритм: Пример: $x \equiv 2 \pmod{3}$, $x \equiv 3 \pmod{5}$, $x \equiv 2 \pmod{7}$. $M=105$, $M_1=35$, $M_2=21$, $M_3=15$. $y_1=35^{-1}=2 \pmod{3}$, $y_2=21^{-1}=1 \pmod{5}$, $y_3=15^{-1}=1 \pmod{7}$. $x \equiv 2\cdot35\cdot2 + 3\cdot21\cdot1 + 2\cdot15\cdot1 = 233 \equiv 23 \pmod{105}$. ⚠ Ошибка 1. Обратный элемент существует не всегда. $a^{-1} \pmod{m}$ существует $\Leftrightarrow$ $\gcd(a,m) = 1$. Для $2^{-1} \pmod{4}$ обратного нет. ⚠ Ошибка 2. Малая теорема Ферма: забывают условие $p \nmid a$. $a^{p-1} \equiv 1 \pmod{p}$ верно только при $p \nmid a$. Если $p \mid a$, то $a \equiv 0 \pmod{p}$ и $a^{p-1} \equiv 0 \pmod{p}$. ⚠ Ошибка 3. Функция Эйлера: путают формулу для степени простого. $\varphi(p^k) = p^k - p^{k-1} = p^{k-1}(p-1)$, а не $p^k-1$. Для $p=2$, $k=3$: $\varphi(8) = 8-4 = 4$, а не $7$. ⚠ Ошибка 4. Китайская теорема об остатках: модули должны быть попарно взаимно просты. Если $\gcd(m_i, m_j) \neq 1$ для какой-то пары, метод не работает напрямую. ⚠ Ошибка 5. RSA: путают открытую и секретную экспоненту. $e$ — открытая (public), $d$ — секретная (private). Шифрование: $c \equiv m^e \pmod{n}$. Дешифрование: $m \equiv c^d \pmod{n}$. ☞ Малая теорема Ферма: «Если $p$ простое и не делит $a$, то $a^{p-1}$ даёт остаток 1 при делении на $p$». Полезно для быстрой проверки простоты. ☞ Алгоритм Евклида: «Всё время делим большее на меньшее и берём остаток, пока не получим ноль». На каждом шаге $\gcd(a,b) = \gcd(b, a \bmod b)$. ☞ Функция Эйлера: «Сколько чисел до $n$ взаимно просты с $n$». Для простого $p$: $\varphi(p) = p-1$ (все, кроме самого $p$). Включения строгие: Регулярные $\subset$ КС $\subset$ КЗ $\subset$ Рекурсивные $\subset$ Рекурсивно перечислимые. ► Задача 1. Построение ДКА по регулярному выражению.
Алгоритм (синтез): Пример: Регулярное выражение $(a|b)^*abb$. ДКА будет иметь 4 состояния и распознавать строки, заканчивающиеся на $abb$. ► Задача 2. Доказательство нерегулярности языка (pumping lemma).
Алгоритм: Пример: Язык $L = \{a^m b^m \mid m \ge 0\}$ нерегулярен. Выбираем $w = a^n b^n$. $y$ состоит только из $a$ (т.к. $|xy| \le n$). При $k=2$ число $a$ становится $n+|y|$, а число $b$ — $n$. Строка не в $L$. ► Задача 3. Определение типа грамматики/языка по иерархии Хомского.
Алгоритм: Проверить ограничения на правила грамматики: ⚠ Ошибка 1. Конечный автомат vs Регулярное выражение. Не всякий язык, допускаемый конечным автоматом, описывается простым регулярным выражением — но по теореме Клини такое выражение ВСЕГДА существует. ⚠ Ошибка 2. Pumping lemma: направление импликации. Лемма работает ТОЛЬКО в одну сторону: «Если язык регулярен, то выполняется свойство разрастания». Обратное неверно! Существуют нерегулярные языки, удовлетворяющие pumping lemma. ⚠ Ошибка 3. НКА может иметь $\varepsilon$-переходы. Недетерминированный автомат может иметь переходы по пустому слову ($\varepsilon$). При детерминизации нужно сначала вычислить $\varepsilon$-closure для каждого состояния. ⚠ Ошибка 4. Детерминизация: экспоненциальный взрыв состояний. ДКА, построенный по НКА с $n$ состояниями, может иметь до $2^n$ состояний. На практике это редкость, но теоретически возможно. Лексический анализ в компиляторах: регулярные выражения $\to$ ДКА для распознавания токенов (lex, flex). Синтаксический анализ: КС-грамматики для разбора языков программирования (yacc, bison). Поиск по тексту: регулярные выражения (grep, sed). Валидация ввода: проверка email, телефонов, паролей. Сетевые протоколы: конечные автоматы для описания состояний протоколов (TCP). Порядок подгруппы делит порядок конечной группы: $|H| \mid |G|$. Следствие: Порядок элемента (наименьшее $n: a^n = e$) делит порядок группы. Порождена одним элементом: $G = \langle a \rangle = \{a^n \mid n \in \mathbb{Z}\}$. Все циклические группы порядка $n$ изоморфны $\mathbb{Z}_n$. Изоморфизм Стоуна: Любая конечная булева алгебра изоморфна булеану $\mathcal{P}(X)$ с операциями $\cap, \cup, \overline{\cdot}$.Методы построения
Линейность
Типовые ошибки
Мнемонические правила
Приложения
5. ТЕОРИЯ ГРАФОВ
5.1. Основные понятия
Определения
Понятие
Определение
Граф $G = (V, E)$
$V$ — множество вершин, $E \subseteq V \times V$ — множество рёбер.
Неориентированный граф
Рёбра — неупорядоченные пары $\{u, v\}$.
Ориентированный граф (орграф)
Рёбра — упорядоченные пары $(u, v)$ (дуги).
Мультиграф
Допускаются кратные рёбра и петли.
Порядок графа
$\|V\|$ — число вершин.
Размер графа
$\|E\|$ — число рёбер.
Петля
Ребро $\{v, v\}$ (или $(v,v)$).
Смежные вершины
Соединены ребром.
Инцидентность
Вершина $v$ и ребро $e$, если $v \in e$.
Степень вершины $\deg(v)$
Число инцидентных рёбер. Для орграфа: $\deg^+(v)$ — полустепень исхода, $\deg^-(v)$ — полустепень захода.
Изолированная вершина
$\deg(v) = 0$.
Висячая вершина (лист)
$\deg(v) = 1$.
Маршрут
Последовательность вершин $v_0, v_1, \dots, v_k$, где $\{v_i, v_{i+1}\} \in E$. Длина $k$.
Цепь
Маршрут без повторяющихся рёбер.
Простая цепь
Маршрут без повторяющихся вершин.
Цикл
Замкнутая цепь ($v_0 = v_k$, $k \ge 1$).
Простой цикл
Замкнутая простая цепь.
Связный граф
Между любой парой вершин существует маршрут.
Компонента связности
Максимальный связный подграф.
Полный граф $K_n$
Все пары вершин смежны: $\|E\| = \binom{n}{2}$.
Двудольный граф
$V = V_1 \sqcup V_2$, рёбра только между $V_1$ и $V_2$.
Полный двудольный граф $K_{m,n}$
$\|V_1\| = m$, $\|V_2\| = n$, все рёбра между долями: $\|E\| = mn$.
Регулярный граф
Все степени равны. $k$-регулярный: $\forall v\ \deg(v) = k$.
Подграф
$G' = (V', E')$, $V' \subseteq V$, $E' \subseteq E$.
Остовный подграф
$V' = V$ (все вершины сохранены).
Дополнение графа $\overline{G}$
Граф на $V$ с рёбрами, отсутствующими в $G$.
Лемма о рукопожатиях
Способы задания графов
Способ
Описание
Применение
Матрица смежности $A$
$A_{ij} = 1$, если $\{v_i, v_j\} \in E$; иначе $0$
$A^k_{ij}$ — число маршрутов длины $k$ между $i$ и $j$
Матрица инцидентности $B$
$B_{ve} = 1$, если $v$ инцидентна $e$
Для неориентированных графов (для орграфов: $-1$ для начала, $+1$ для конца)
Список смежности
Для каждой вершины — список соседей
Алгоритмы, компактное хранение
5.2. Деревья
Определения и теоремы
Остовное дерево
5.3. Циклы и связность
Определения
Эйлеровы графы
Гамильтоновы графы
5.4. Планарность
Определения
Формула Эйлера
Критерий Понтрягина–Куратовского
Критерий Вагнера
5.5. Раскраска графов
Определения
Основные теоремы
Хроматический многочлен
5.6. Паросочетания и покрытия
Определения
Теорема Кёнига–Эгервари (для двудольных графов)
Теорема Холла (условие существования совершенного паросочетания в двудольном графе)
5.7. Потоки в сетях
Определения
Теорема Форда–Фалкерсона (о максимальном потоке и минимальном разрезе)
5.8. Алгоритмы на графах
Алгоритм Дейкстры (кратчайшие пути из одной вершины)
Алгоритм Флойда–Уоршелла (кратчайшие пути между всеми парами)
Алгоритм Форда–Беллмана
Алгоритм Крускала (минимальный остов)
Алгоритм Прима
Поиск в глубину (DFS) и ширину (BFS)
DFS (глубина)
BFS (ширина)
Структура
Стек (рекурсия)
Очередь
Применение
Топологическая сортировка, компоненты связности, мосты и точки сочленения, проверка двудольности
Кратчайший путь в невзвешенном графе, слои
Время
$O(\|V\| + \|E\|)$
$O(\|V\| + \|E\|)$
Типовые задачи и алгоритмы решения
Типовые ошибки
Мнемонические правила
Приложения
6. ТЕОРИЯ ЧИСЕЛ И КРИПТОГРАФИЯ (ДИСКРЕТНЫЙ АСПЕКТ)
6.1. Делимость и сравнения
Определения
Алгоритм Евклида
Расширенный алгоритм Евклида
Функция Эйлера $\varphi(n)$
6.2. Основные теоремы
Малая теорема Ферма
Теорема Эйлера
Китайская теорема об остатках
Основная теорема арифметики
6.3. RSA (основы)
Генерация ключей
Шифрование и дешифрование
Типовые задачи
Типовые ошибки
Мнемонические правила
7. ОСНОВЫ ФОРМАЛЬНЫХ ЯЗЫКОВ И АВТОМАТОВ
7.1. Алфавит, слова, языки
Определения
Операции над языками
Операция
Обозначение
Определение
Объединение
$L_1 \cup L_2$
$\{w \mid w \in L_1 \lor w \in L_2\}$
Конкатенация
$L_1 L_2$
$\{xy \mid x \in L_1, y \in L_2\}$
Итерация (звезда Клини)
$L^*$
$\bigcup_{n \ge 0} L^n$, $L^0 = \{\varepsilon\}$
Позитивная итерация
$L^+$
$\bigcup_{n \ge 1} L^n$
Дополнение
$\overline{L} = \Sigma^* \setminus L$
7.2. Регулярные языки и конечные автоматы
Определения
Регулярные выражения (определение индуктивно)
Основные теоремы
7.3. Иерархия Хомского
Тип
Класс языков
Грамматика
Автомат
0
Рекурсивно перечислимые
Без ограничений
Машина Тьюринга
1
Контекстно-зависимые (КЗ)
$\alpha A \beta \to \alpha \gamma \beta$, $\gamma \neq \varepsilon$
Линейно-ограниченный автомат
2
Контекстно-свободные (КС)
$A \to \gamma$, $A \in N$, $\gamma \in (N \cup \Sigma)^*$
Автомат с магазинной памятью (МП-автомат)
3
Регулярные
$A \to aB$ или $A \to a$, $A \to \varepsilon$
Конечный автомат
Типовые задачи
Типовые ошибки
Приложения
ПРИЛОЖЕНИЕ A: АЛГЕБРАИЧЕСКИЕ СТРУКТУРЫ (КРАТКИЙ СПРАВОЧНИК)
A.1. Группы
Определения
Теорема Лагранжа
Циклическая группа
A.2. Кольца и поля
Структура
Операции
Свойства
Пример
Кольцо
$+$ (абелева группа), $\times$ (ассоциативность, дистрибутивность)
$\times$ может не иметь единицы и обратных
$\mathbb{Z}$, $\mathbb{Z}_n$, матрицы
Коммутативное кольцо
Кольцо + $ab = ba$
$\mathbb{Z}$, $\mathbb{R}[x]$
Кольцо с единицей
$\exists 1: 1 \cdot a = a \cdot 1 = a$
$\mathbb{Z}$
Область целостности
Коммутативное кольцо с $1 \neq 0$, без делителей нуля
$ab = 0 \Rightarrow a = 0 \lor b = 0$
$\mathbb{Z}$
Поле
Коммутативное кольцо с $1 \neq 0$, где $\forall a \neq 0\ \exists a^{-1}$
Все ненулевые элементы обратимы
$\mathbb{Q}, \mathbb{R}, \mathbb{C}, \mathbb{Z}_p$ ($p$ простое)
A.3. Решётки
Определения
ПРИЛОЖЕНИЕ B: ШПАРГАЛКА ПО ФОРМУЛАМ (QUICK REFERENCE)
B.1. Логика и булевы функции
Формула
Название
$\overline{x \land y} = \overline{x} \lor \overline{y}$
Де Морган
$\overline{x \lor y} = \overline{x} \land \overline{y}$
Де Морган
$x \to y = \overline{x} \lor y$
Выражение импликации
$x \oplus y = x\overline{y} \lor \overline{x}y = (x \lor y)(\overline{x} \lor \overline{y})$
XOR
$x \mid y = \overline{xy}$
Штрих Шеффера (базис)
$x \downarrow y = \overline{x \lor y}$
Стрелка Пирса (базис)
Полнота системы
$K \not\subseteq T_0, T_1, S, M, L$
B.2. Теория графов
Формула
Название
$\sum \deg(v) = 2\|E\|$
Лемма о рукопожатиях
$n - m + f = 2$
Формула Эйлера (плоский граф)
Дерево $\Leftrightarrow$ связный и $m = n-1$
Критерий дерева
$m \le 3n - 6$
Следствие планарности
Эйлеров цикл $\Leftrightarrow$ все $\deg(v)$ чётны
Теорема Эйлера
$\operatorname{DFS}$ / $\operatorname{BFS}$: $O(\|V\| + \|E\|)$
Сложность обходов
B.3. Комбинаторика
Формула
Название
$\binom{n}{k} = \frac{n!}{k!(n-k)!}$
Биномиальный коэффициент
$\binom{n}{k} = \binom{n-1}{k-1} + \binom{n-1}{k}$
Треугольник Паскаля
$C_n = \frac{1}{n+1}\binom{2n}{n}$
Число Каталана
$!n = n! \sum_{k=0}^n \frac{(-1)^k}{k!}$
Субфакториал (беспорядки)
$\{^n_k\} = k \{^{n-1}_{\;k}\} + \{^{n-1}_{k-1}\}$
Стирлинг II рода
$B_{n+1} = \sum_{k=0}^n \binom{n}{k} B_k$
Числа Белла
$F_n = \frac{\varphi^n - (-\varphi)^{-n}}{\sqrt{5}}$
Формула Бине (Фибоначчи)
B.4. Теория чисел
Формула
Название
$\gcd(a, b) = \gcd(b, a \bmod b)$
Алгоритм Евклида
$a^{p-1} \equiv 1 \pmod{p}$
Малая теорема Ферма ($p \nmid a$)
$a^{\varphi(m)} \equiv 1 \pmod{m}$
Теорема Эйлера ($\gcd(a,m)=1$)
$\varphi(n) = n \prod_{p \mid n} (1 - 1/p)$
Функция Эйлера
B.5. Формальные языки
Класс
Автомат
Грамматика
Регулярные
ДКА / НКА
$A \to aB$, $A \to a$
КС
МП-автомат
$A \to \gamma$
КЗ
ЛОА
$\alpha A \beta \to \alpha \gamma \beta$
Тип 0
Машина Тьюринга
Без ограничений
ПРИЛОЖЕНИЕ C: ТИПОВЫЕ ЗАДАЧИ И АЛГОРИТМЫ РЕШЕНИЯ
C.1. Проверка полноты системы булевых функций
C.2. Построение минимальной ДНФ (карта Карно для $n=4$)
C.3. Проверка планарности графа
C.4. Решение линейных рекуррент
ПРИЛОЖЕНИЕ D: БИБЛИОГРАФИЯ И РЕСУРСЫ
D.1. Классические учебники
Автор(ы)
Название
Уровень
Примечание
Яблонский С.В.
«Введение в дискретную математику»
Базовый–Университетский
Классический учебник МГУ; булевы функции, логика, автоматы, графы.
Гаврилов Г.П., Сапоженко А.А.
«Задачи и упражнения по дискретной математике»
Сборник задач
Задачник-компаньон к Яблонскому.
Алексеев В.Б.
«Дискретная математика»
Базовый
Компактное изложение; хорош для подготовки к экзамену.
Нефедов В.Н., Осипова В.А.
«Курс дискретной математики»
Базовый
Графы, комбинаторика, логика.
Оре О.
«Теория графов»
Продвинутый
Классика теории графов; фундаментальный труд.
Харари Ф.
«Теория графов»
Университетский
Самая известная книга по теории графов.
Андерсон Д.А.
«Дискретная математика и комбинаторика»
Базовый
Англоязычный подход; множество примеров.
Розен К.
«Дискретная математика и её приложения»
Базовый
Огромный учебник-энциклопедия.
Липский В.
«Комбинаторика для программистов»
Базовый
Алгоритмический подход.
Новиков Ф.А.
«Дискретная математика для программистов»
Базовый
Практическая ориентация.
Хаггарти Р.
«Дискретная математика для программистов»
Базовый
Компактно; логика, графы, алгоритмы.
Яблонский С.В., Гаврилов Г.П., Кудрявцев В.Б.
«Функции алгебры логики и классы Поста»
Монография
Глубокое изложение теории булевых функций.
D.2. Онлайн-ресурсы и материалы
Ресурс
Описание
Кафедра математической кибернетики МГУ (
cmc.msu.ru)Программы курсов по дискретной математике
Кафедра дискретной математики МФТИ (
mipt.ru)Материалы лекций и семинаров
Intuit.ru
Бесплатные онлайн-курсы по дискретной математике
MathNet.ru
Научные статьи и обзоры по дискретной математике
Teach-In (МГУ)
Видеолекции по дискретной математике
MIT OCW (Mathematics for Computer Science)
Англоязычный курс; отличный компаньон
D.3. Рабочая программа (МИФИ/МФТИ/МГУ — типовые темы)