Теория вероятностей
Комбинаторика: искусство подсчёта
Цели урока
- Освоить два золотых правила: умножение (И) и сложение (ИЛИ)
- Понять разницу между перестановками, размещениями и сочетаниями
- Научиться выбирать правильную формулу по ситуации
- Применять комбинаторику для вычисления вероятностей
Предварительные знания
- Понятие вероятности и пространства исходов
- Факториал: $n! = 1 \cdot 2 \cdot 3 \cdot \ldots \cdot n$
GPT-4 выбирает следующий токен из словаря размером 50 257 вариантов. Один inference = тысячи таких выборов подряд. Число возможных ответов на один запрос - больше атомов во Вселенной. Но модель находит хороший ответ за долю секунды - именно потому, что вероятность сжимает этот взрыв до управляемой формы. А сжать взрыв можно только если сначала его посчитать. Комбинаторика - это счёт.
- **LLM vocabulary:** GPT-4 словарь - 50 257 токенов. Beam search с шириной 10 исследует $50257^{10}$ путей - комбинаторика объясняет, почему без pruning это невозможно
- **BPE токенизация:** алгоритм Byte Pair Encoding строит словарь из $C_n^2$ пар на каждой итерации - классическое сочетание
- **Пароли:** 8 символов из 62 (a-z, A-Z, 0-9) = $62^8 \approx 218$ триллионов комбинаций - это размещение с повторениями
- **Лотерея "6 из 49":** $C_{49}^6 = 13\,983\,816$ вариантов. Вероятность джекпота - $0.000007\%$. Вот почему не выигрывают
- **Надёжность систем:** вероятность отказа из $k$ компонентов среди $n$ считается через $C_n^k$ - формула за каждым SLA в AWS и Azure
От магических квадратов к Big Data
Комбинаторикой занимались ещё в Древнем Китае (магические квадраты) и Индии. Но систематическое изложение дал Якоб Бернулли в "Ars Conjectandi" (1713) - той самой книге, где родилась теория вероятностей. Ирония: он умер за 8 лет до публикации и не увидел, как его работа изменила математику. Сегодня комбинаторика - основа криптографии, машинного обучения и анализа данных.
Комбинаторика: искусство подсчёта
**Задача о рукопожатиях:** на вечеринке 30 гостей, каждый пожал руку каждому ровно один раз. Сколько всего рукопожатий? Первый импульс - $30 \times 30 = 900$. Неверно. Почему - станет ясно через несколько минут.
Комбинаторика - это математика подсчёта возможностей. Звучит просто, но именно здесь интуиция ломается чаще всего. Число путей в beam search, число конфигураций нейросети, число коллизий хеша - всё это комбинаторика. Начнём с двух правил, из которых строится всё остальное.
Почему в задаче о рукопожатиях 30 гостей дают $\binom{30}{2}=435$ рукопожатий, а не $30\times 30 = 900$?
$30\times 30$ считает упорядоченные пары вместе с самопожатиями. Реальный счёт: $\binom{30}{2} = \frac{30\cdot 29}{2} = 435$ - выбираем 2 человек из 30 без порядка.
Два золотых правила: "И" vs "ИЛИ"
Два золотых правила: "И" vs "ИЛИ"
Прежде чем учить формулы - два фундаментальных правила. Они объясняют, почему одни задачи решаются умножением, другие - сложением, и почему путаница между ними даёт ответ в тысячи раз неправильным.
Правило умножения: когда "И"
Если нужно сделать действие A **И** действие B, и A можно сделать $m$ способами, а B - $n$ способами, то вместе: $m \times n$ способов.
Утренний образ
Выбираем одежду
5 рубашек **И** 3 пары брюк. Сколько образов? $5 \times 3 = 15$ образов Почему умножение? Для каждой рубашки подходят все 3 пары брюк - выборы независимы. Добавить 4 пары обуви: $5 \times 3 \times 4 = 60$ образов. То же правило стоит за числом конфигураций нейросети: если слой 1 имеет $m$ возможных состояний, слой 2 - $n$, сеть из двух слоёв имеет $m \times n$ конфигураций.
Правило сложения: когда "ИЛИ"
Если нужно выбрать действие A **ИЛИ** действие B (не оба!), и A можно сделать $m$ способами, а B - $n$ способами, то: $m + n$ способов.
Как добраться до офиса
Альтернативы
До офиса ходят 3 автобуса **ИЛИ** 2 троллейбуса. $3 + 2 = 5$ способов **Почему сложение?** Потому что это *альтернативы* - едешь или на одном, или на другом, не на обоих сразу.
"И" в условии - умножай. "ИЛИ" - складывай. Это работает в 90% задач. Оставшиеся 10% - это когда альтернативы пересекаются, и тогда нужна формула включения-исключения из урока 01.
В меню 4 салата, 5 основных блюд и 3 десерта. Сколько способов заказать обед из салата, основного И десерта?
Ключевое слово - "И". Нужно выбрать И салат, И основное, И десерт. Каждый выбор независим → умножаем.
Перестановки: расставляем ВСЁ
Перестановки: расставляем ВСЁ
**Перестановка** - это когда берём ВСЕ объекты и расставляем их в определённом порядке.
Возьмём очередь из $n$ человек. Сколько способов их расставить?
**Почему факториал?** На первое место - $n$ вариантов. На второе - $(n-1)$ (один уже занят). На третье - $(n-2)$. И так далее.
Фотография друзей
4 человека в ряд
Аня, Боря, Вася, Галя встают в ряд для фото. $P_4 = 4! = 4 \times 3 \times 2 \times 1 = 24$ способа Логика: - Первым может встать любой из 4 - Вторым - любой из оставшихся 3 - Третьим - любой из 2 - Последний - единственный оставшийся
$5! = 120$ $10! = 3\,628\,800$ (3.6 миллиона) $20! \approx 2.4 \times 10^{18}$ - больше секунд с Большого Взрыва $52!$ (колода карт) $\approx 8 \times 10^{67}$ - больше атомов в наблюдаемой Вселенной Именно поэтому полный перебор токенов в LLM невозможен - пространство $50257^n$ взрывается факториально быстро. Beam search, sampling с температурой, nucleus sampling - всё это способы обойти комбинаторный взрыв, не перебирая все пути.
Перестановки с повторениями
А если некоторые объекты **одинаковые**? Тогда перестановки одинаковых между собой не дают нового результата.
Анаграммы слова "АББА"
Сколько разных перестановок?
Слово "АББА" - 4 буквы: А(2 раза), Б(2 раза) Если бы все были разные: $4! = 24$ Но А можно переставить между собой $2!$ способами, и Б тоже $2!$ - это не меняет слово! $P = \frac{4!}{2! \cdot 2!} = \frac{24}{4} = 6$ Проверка: ААББ, АБАБ, АББА, БААБ, БАБА, ББАА - ровно 6!
Spotify хочет перемешать плейлист из 10 треков. Сколько существует порядков?
Это классическая перестановка: расставить все 10 треков в определённом порядке. Первый трек - 10 вариантов, второй - 9, и т.д. Итого $10!$
Размещения: выбираем ЧАСТЬ с порядком
Размещения: выбираем ЧАСТЬ с порядком
**Размещение** - это когда выбираем $k$ объектов из $n$, и **порядок важен**.
Призовые места
Забег 10 спортсменов
Сколько способов распределить золото, серебро, бронзу среди 10 спортсменов? $A_{10}^3 = 10 \times 9 \times 8 = 720$ способов **Порядок важен!** "Иванов-золото, Петров-серебро" ≠ "Петров-золото, Иванов-серебро"
Размещения С повторениями
Если элементы можно использовать **повторно** (цифры в PIN-коде, буквы в пароле):
4-значный PIN-код
Сколько комбинаций?
Цифры: 0-9 (n = 10), длина: 4 (k = 4) $\bar{A}_{10}^4 = 10^4 = 10\,000$ кодов От 0000 до 9999 - ровно 10 000 вариантов. GPU перебирает их меньше чем за миллисекунду. Именно поэтому PIN из 4 цифр - лишь замедление, не защита. 8 символов из 62 - $62^8 \approx 218$ триллионов: уже другой масштаб.
"Размещение и перестановка - одно и то же"
Перестановка - это размещение ВСЕХ элементов ($k = n$)
Перестановка $P_n = n!$ - частный случай размещения при $k = n$: $A_n^n = n!/(n-n)! = n!/0! = n!$. При $k < n$ - это уже размещение. Различие важно: beam search выбирает $k$ токенов из словаря размером $n$ с учётом порядка - это $A_n^k$, не $n!$.
Пароль из 8 символов (a-z, A-Z, 0-9 = 62 символа), повторения разрешены. Сколько вариантов?
Размещение с повторениями: на каждую из 8 позиций - 62 варианта. Итого $62^8$ ≈ 218 триллионов. Поэтому 8-символьный пароль считается надёжным!
Сочетания: порядок НЕ важен
Сочетания: порядок НЕ важен
**Сочетание** - это когда выбираем $k$ объектов из $n$, и **порядок НЕ важен** (только состав).
Лотерея "6 из 49"
Шанс сорвать джекпот
Нужно угадать 6 чисел из 49. Порядок не важен - только какие выпали. $C_{49}^6 = \frac{49!}{6! \cdot 43!} = \frac{49 \times 48 \times 47 \times 46 \times 45 \times 44}{720} = 13\,983\,816$ **Вероятность джекпота:** $\frac{1}{13\,983\,816} \approx 0.000007\%$ Чтобы гарантировать выигрыш, нужно купить 14 миллионов билетов!
Команда для проекта
Выбираем 3 из 10
Сколько способов выбрать команду из 3 человек из группы в 10? $C_{10}^3 = \frac{10!}{3! \cdot 7!} = \frac{10 \times 9 \times 8}{6} = 120$ способов В команде нет ролей - {Аня, Боря, Вася} = {Вася, Аня, Боря}.
$C_n^k = C_n^{n-k}$ Почему? Выбрать $k$ элементов **взять** - то же самое, что выбрать $n-k$ элементов **оставить**. $C_{10}^3 = C_{10}^7 = 120$ $C_{100}^{98} = C_{100}^2 = 4950$ **Лайфхак:** Если $k$ близко к $n$, считай через $n-k$!
"Если не знаю, использую сочетания - формула проще"
Сочетания или размещения - зависит ТОЛЬКО от того, важен ли порядок
Один вопрос расставляет всё по местам: если переставить выбранные элементы местами - изменится ли результат? ДА (медали, должности, токены в тексте) - размещение. НЕТ (лотерея, команда без ролей, набор признаков) - сочетание. Наивный Байес предполагает, что слова в письме - это именно сочетание: порядок не важен, важно только какие слова есть.
Выбираем президента, вице-президента и казначея из 10 человек. Что использовать?
Порядок ВАЖЕН! Президент ≠ казначей. Одни и те же 3 человека могут занять должности по-разному. Поэтому размещение, а не сочетание.
Как выбрать формулу?
Как выбрать формулу?
**Шаг 1:** Порядок важен? - ДА → размещение или перестановка - НЕТ → сочетание **Шаг 2:** Повторения разрешены? - ДА → с повторениями ($n^k$) - НЕТ → без повторений **Шаг 3:** Берём все или часть? - ВСЕ → перестановка $n!$ - ЧАСТЬ → размещение $A_n^k$ или сочетание $C_n^k$
| Что делаем | Формула | Пример |
|---|---|---|
| Все в ряд | $P_n = n!$ | Очередь, shuffle плейлиста |
| k из n, порядок важен | $A_n^k$ | Медали, должности |
| k из n, с повторениями | $n^k$ | PIN, пароль |
| k из n, порядок не важен | $C_n^k$ | Лотерея, команда |
Вернёмся к рукопожатиям: 30 гостей, каждый пожал руку каждому. Сколько рукопожатий?
Рукопожатие - это пара людей. Порядок НЕ важен: "Аня-Боря" = "Боря-Аня". Поэтому сочетание! $C_{30}^2 = \frac{30 \times 29}{2} = 435$. Ошибка "$30 \times 30$" считает каждое рукопожатие дважды + рукопожатия с самим собой.
Комбинаторика в вероятности
Комбинаторика в вероятности
Классическая вероятность: $P(A) = \frac{|A|}{|\Omega|}$. Всё красиво - но как посчитать $|A|$ и $|\Omega|$, когда исходов миллионы? Вот где вступает комбинаторика. Без неё формула работает только для задач уровня "вытянуть шар из урны".
Покер: вероятность пары
Одна из самых частых комбинаций
Пара - ровно две карты одного номинала (два туза, две семёрки и т.д.) **Благоприятных исходов:** 1. Выбираем номинал пары: $C_{13}^1 = 13$ 2. Выбираем 2 масти из 4: $C_4^2 = 6$ 3. Выбираем 3 номинала для остальных: $C_{12}^3 = 220$ 4. Для каждого - 1 масть из 4: $4^3 = 64$ Итого: $13 \times 6 \times 220 \times 64 = 1\,098\,240$ **Всего 5-карточных рук:** $C_{52}^5 = 2\,598\,960$ $P(\text{пара}) = \frac{1\,098\,240}{2\,598\,960} \approx 42.3\%$ Пара - самая частая ненулевая комбинация!
Считаем вероятность двух тузов в случайной 5-карточной руке. Какая часть формулы относится к числителю $|A|$?
Числитель $|A|$ перечисляет благоприятные исходы: фиксируем номинал пары, выбираем 2 масти из 4, затем добираем 3 непарных номинала и для каждого по 1 масти. $C_{52}^5$ - это знаменатель $|\Omega|$.
Практика
Практика
Сколько способов выбрать старосту и заместителя из группы 25 человек?
$A_{25}^2 = 25 \times 24 = 600$ способов
В урне 7 белых и 5 чёрных шаров. Вынимают 3 шара одновременно. Какова вероятность, что все три белые?
Благоприятных (3 белых из 7): $C_7^3 = 35$ Всего (3 любых из 12): $C_{12}^3 = 220$ $P = \frac{35}{220} = \frac{7}{44} \approx 15.9\%$
Автомобильный номер: 3 буквы (из 12 возможных) + 3 цифры. Буквы и цифры могут повторяться. Сколько номеров?
Букв: $12^3 = 1728$ вариантов Цифр: $10^3 = 1000$ вариантов Всего: $1728 \times 1000 = 1\,728\,000$ номеров
Сколько способов расставить 8 ладей на шахматной доске так, чтобы они не били друг друга?
Одна ладья на каждой горизонтали, одна на каждой вертикали. Первая ладья: 8 вертикалей Вторая: 7 (одна занята) Третья: 6 ...и так далее $8! = 40\,320$ способов *Это классическая задача, эквивалентная перестановкам чисел 1-8!*
В лотерее нужно угадать 6 номеров из 49. Какова вероятность сорвать джекпот, угадав все 6?
Порядок номеров не важен, повторений нет - значит сочетания. Благоприятный исход один, всего исходов $C_{49}^6 = 13\,983\,816$. Размещения завысят знаменатель в $6!$ раз, а $49^6$ ошибочно допускает повторения.
Комбинаторика повсюду
Это фундамент для многих областей:
- Условная вероятность — Подсчёт при дополнительных условиях
- Биномиальное распределение — $C_n^k$ - биномиальные коэффициенты
- Криптография — Оценка сложности перебора ключей
- Machine Learning — Комбинаторная сложность пространства признаков
Ключевые формулы
- **Умножение (И):** $m \times n$ - независимые последовательные выборы перемножаются. Число конфигураций системы из $k$ компонентов - произведение
- **Сложение (ИЛИ):** $m + n$ - взаимоисключающие альтернативы складываются
- **Перестановки:** $P_n = n!$ - все $n$ в порядке. Факториал растёт быстрее любой экспоненты
- **Размещения:** $A_n^k = n!/(n-k)!$ - $k$ из $n$, порядок важен. Beam search, пароли
- **С повторениями:** $n^k$ - каждая позиция независима. Словарь токенов в степени длины последовательности
- **Сочетания:** $C_n^k$ - $k$ из $n$, порядок не важен. Биномиальные коэффициенты, BPE-словарь, надёжность систем
Вопросы для размышления
- Вернись к задаче о рукопожатиях. Теперь понимаешь, почему $30 \times 30$ - неправильно?
- Почему лотерейные организаторы используют сочетания, а не размещения?
- Пароль из 8 цифр vs пароль из 8 букв+цифр - во сколько раз второй надёжнее?
- В покере 5-карточных рук $C_{52}^5 \approx 2.6$ млн. А сколько 7-карточных?