Правила сложения и умножения
Правила сложения и умножения
Представьте, что вы проектируете систему авторизации. Четырехзначный PIN-код из цифр от 0 до 9 взламывается простым перебором за пару секунд: в нем ровно 10 000 вариантов. Но если потребовать добавить хотя бы одну букву латинского алфавита, число комбинаций взлетит до сотен тысяч. Почему добавление одного символа меняет безопасность системы в десятки раз? И как дата-сайентисту быстро оценить, сколько конфигураций придется перебрать алгоритму GridSearchCV при подборе гиперпараметров модели машинного обучения?
В основе комбинаторики, теории вероятностей и всей вычислительной математики лежат всего два фундаментальных принципа: правило сложения и правило умножения. Они позволяют отвечать на главный вопрос комбинаторики: «Сколькими способами можно получить нужный результат?», не выписывая все варианты вручную.
Правило сложения: выбор по принципу «ИЛИ»
Начнем с базовой ситуации: перед нами несколько групп вариантов, и нам нужно выбрать ровно один вариант из всех возможных.
Правило сложения: Если объект можно выбрать способами, а объект — способами, причем выбор и выбор исключают друг друга (не могут произойти одновременно), то выбрать «либо , либо » можно способами.
Математически для любого количества непересекающихся групп вариантов :
Здесь:
- — общее число способов сделать единственный выбор;
- — количество вариантов выбора в каждой отдельной независимой категории.
Практический пример: Аналитик данных решает задачу классификации текстов. У него есть выбор: использовать одну из 3 моделей на основе решающих деревьев (Random Forest, Gradient Boosting, Extra Trees) или одну из 2 линейных моделей (логистическая регрессия, линейный SVM). Аналитик намерен запустить в качестве базового решения ровно одну модель. Сколькими способами он может выбрать алгоритм?
Поскольку модель выбирается только одна, варианты не пересекаются: способов.
Критическое условие: несовместность
Сложение работает только тогда, когда варианты не пересекаются. В теории множеств это означает, что множества вариантов не имеют общих элементов: их пересечение пусто ().
Если варианты могут совпасть, простое сложение приведет к дублированию. Например, если среди 10 сотрудников 6 владеют Python, а 5 — SQL, мы не можем сложить , если кто-то знает оба инструмента. Подсчет объектов с пересечениями регулируется принципом включений-исключений, который подробно разобран в главе 6. В рамках правила сложения мы всегда следим за тем, чтобы категории были взаимоисключающими.
Правило умножения: цепочка выбора по принципу «И»
Теперь усложним задачу: вместо выбора одного объекта из альтернатив нам нужно сконструировать составной объект, совершив серию последовательных шагов: выбрать первый элемент И второй элемент И третий элемент.
Правило умножения: Если первый шаг можно выполнить способами, а после каждого такого выбора второй шаг можно выполнить способами, то последовательность из двух шагов можно выполнить способами.
В общем виде для цепочки из последовательных шагов:
Здесь:
- — общее число итоговых комбинаций;
- — количество вариантов на первом шаге;
- — количество вариантов на втором шаге (при любом исходе первого шага);
- — количество вариантов на -м шаге.
Практический пример: Вы настраиваете архитектуру полносвязной нейронной сети для классификации табличных данных. Вам нужно выбрать:
- Функцию активации на скрытых слоях:
ReLU,GELUилиSwish(3 варианта). - Оптимизатор:
AdamWилиSGD(2 варианта). - Размер батча: 32, 64, 128 или 256 (4 варианта).
Каждый вариант первого шага свободно комбинируется с любым вариантом второго и третьего. Общее число уникальных архитектур для эксперимента:
Получаем 24 уникальные конфигурации.
Дерево исходов: как увидеть правило умножения
Чтобы понять, почему варианты именно перемножаются, полезно представить процесс в виде дерева решений (графа). Корень дерева — исходное состояние. Из него выходят ветви первого шага, из конца каждой ветви — ветви второго шага, и так далее.
Каждый путь от корня до финального листа дерева представляет собой одну законченную комбинацию.
Как видно на схеме, если на первом уровне образуется 3 ветки, и из каждой выходит по 2 новые ветки, общее количество листьев на конце дерева равно . Умножение — это компактная запись разветвления дерева.
Инвариантность количества, а не состава
Одно из самых частых заблуждений в правиле умножения: начинающие думают, что на каждом шаге должны быть доступны одни и те же объекты. Это не так.
Важно лишь то, чтобы количество вариантов на следующем шаге оставалось неизменным, независимо от того, какой именно объект был выбран на предыдущем шаге.
Пример: В отделе из 5 аналитиков нужно назначить тимлида и код-ревьюера. Тимлидом может стать любой из 5 человек. После того как тимлид назначен, код-ревьюером можно назначить любого из оставшихся сотрудников. Сам состав кандидатов на втором шаге меняется (выбранный тимлид уже не доступен), но их количество всегда строго равно . Значит, правило умножения законно:
Сравнение правил: ИЛИ против И
Чтобы не путать эти правила на практике, сведем их ключевые отличия в таблицу:
| Критерий | Правило сложения | Правило умножения |
|---|---|---|
| Логическая связка | «ИЛИ» (выбор альтернативы) | «И» (последовательный выбор) |
| Характер действия | Выбирается один элемент из множества групп | Формируется кортеж/набор из элементов разных групп |
| Графическая модель | Объединение параллельных путей | Последовательное ветвление (дерево исходов) |
| Ключевое требование | Несовместность вариантов (нет общих исходов) | Независимость числа вариантов на каждом шаге |
| Формула |
Комбинирование правил в реальных задачах
В реальных инженерных и аналитических задачах сложение и умножение почти всегда работают в тандеме. Разберем сквозной сценарий.
Кейс: генерация идентификаторов для Data Pipeline
Инженер данных проектирует схему генерации временных токенов сессий для API. Токен формируется по следующему регламенту:
- Токен состоит из двух частей: буквенного префикса и числового суффикса.
- Префикс указывает на тип среды: либо односимвольный для тестов (
'T'), либо двухсимвольный для продакшена (две заглавные буквы латинского алфавита от'A'до'Z', всего 26 букв). - Суффикс — это последовательность из трех цифр (от 0 до 9), причем первая цифра суффикса не может быть нулем (доступны цифры от 1 до 9).
Сколько всего уникальных токенов можно сгенерировать по такой спецификации?
Разобьем решение на логические уровни:
-
Шаг 1. Анализ префикса (правило сложения + правило умножения): Префикс бывает либо тестовым, либо продакшен:
- Тестовый префикс: ровно 1 вариант (
'T'). - Продакшен-префикс: первая буква (26 вариантов) И вторая буква (26 вариантов). По правилу умножения: вариантов.
- Поскольку среда может быть либо тестовой, либо продакшен (несовместные события), применяем правило сложения:
- Тестовый префикс: ровно 1 вариант (
-
Шаг 2. Анализ числового суффикса (правило умножения): Суффикс состоит из трех цифр:
- Первая цифра (от 1 до 9): 9 вариантов.
- Вторая цифра (от 0 до 9): 10 вариантов.
- Третья цифра (от 0 до 9): 10 вариантов.
По правилу умножения для трех позиций:
-
Шаг 3. Итоговая сборка токена: Токен состоит из префикса И суффикса. Связка «И» означает финальное применение правила умножения:
Мы получили более 600 тысяч уникальных идентификаторов, разложив сложный регламент на элементарные шаги сложения и умножения.
Связь с теорией вероятностей и Data Science
Зачем эти формулы специалисту по анализу данных?
В классической теории вероятностей вероятность любого случайного события вычисляется по формуле:
Где:
- — вероятность наступления события ;
- — число благоприятных исходов;
- — общее число всех возможных элементарных исходов в пространстве событий.
Например, вероятность того, что сгенерированный в нашем примере токен случайно окажется тестовым, равна отношению числа тестовых токенов () ко всем возможным токенам ():
Без умения строго подсчитать и с помощью правил суммы и произведения невозможно найти ни одну вероятность в дискретном пространстве.
Кроме того, правило умножения лежит в основе проблемы комбинаторного взрыва при подборе гиперпараметров (Grid Search). Если у вас есть 6 параметров, и для каждого вы проверяете всего по 5 значений, алгоритм должен обучить и протестировать модель:
Если одно обучение занимает хотя бы 10 секунд, полный перебор продлится более 43 часов. Понимание правил комбинаторики позволяет вовремя заметить взрывной рост вычислений и перейти к более эффективным методам — например, случайному поиску (Random Search) или байесовской оптимизации.
Итак, мы выяснили: выбор одной альтернативы из непересекающихся групп требует сложения («ИЛИ»), а построение цепочки независимых выборов — умножения («И»). Но что делать, если мы выбираем элементы из одного и того же множества, причем порядок выбора имеет значение или элементы начинают перемешиваться между собой? Об этом пойдет речь в следующей статье, посвященной факториалу и перестановкам.
