Сайт переезжает. Большинство статей уже перенесено на новую версию.
Скоро добавим автоматические переходы, но пока обновленную версию этой статьи можно найти там.

Комбинаторика

Иногда в задачах требуется подсчитать количество некоторых объектов, количество способов сделать что-то. При этом обычно это количество слишком велико, чтобы можно было перечислить все объекты в явном виде.

Например, можно посчитать количество перестановок из n различных элементов следующим образом. Понятно, что на первое место в перестановке мы можем поставить любой из n элементов, на второе — любой из n1 оставшихся, и так далее. Для последнего места останется только 1 элемент. Значит, число перестановок n элементов равно n(n1)21, что сокращенно обозначается как n!

Принято считать, что 0!=1

Биномиальные коэффициенты

Посчитаем количество способов выбрать k элементов из n различных (называется числом сочетаний из n по k и обозначается Cnk). Точно так же на первое место мы можем поставить любой из n элементов, на второе — любой из n1 оставшихся, на k-е место останется nk+1 вариант, то есть всего вариантов получится n(n1)(nk+1)=n!(nk)!. Заметим, что так мы посчитали число упорядоченных наборов из k элементов и чтобы получить количество способов выбрать k элементов из n нужно поделить результат на k!, ведь, как было установлено ранее, именно столько есть спобосов упорядочить k элементов. В итоге получается Cnk=n!k!(nk)!

Есть и другой способ подсчета Cnk для 0<k<n. Посмотрим на первый элемент. Если он входит в набор, то осталось выбрать k1 из n1 оставшихся. Иначе нужно выбрать k из n1 оставшихся. Значит, Cnk=Cn1k+Cn1k1. Так можно найти все Cnk до какого-то n за O(n2).

Таким образом, Cnk легко представлять в виде бесконечного треугольника, где на сторонах стоят 1, а остальные числа равны сумме двух верхних. Легко видеть, что Cnk это k-е число в строке номер n. Это называют треугольником Паскаля.

Треугольник Паскаля

Число путей черепашки

Пусть, в левом верхнем углу прямоугольного поля стоит черепашка, которая может ходить только на одну клетку вправо или вниз. Сколько у нее способов попасть в правый нижний угол?

Бином Ньютона

Рассмотрим разложение выражения (a+b)n. Докажем, что коэффициент при akbnk равен Cnk. Действительно (a+b)n=(a+b)(a+b)(a+b) (n раз). Чтобы получить член akbnk надо из k скобок выбрать a, а из остальных b. Как мы уже знаем, это можно сделать Cnk. Значит, (a+b)n=k=0nCnkakbnk.

Из этого следует, что коэффициенты при разложении (a+b)n являются строкой треугольника Паскаля.

Бином Ньютона часто используется для доказательства различных комбинаторных формул.

##Полиномиальные коэффициенты

Посчитаем теперь количество разбиений множества на m множеств размеров k1,k2,km. Это называется полиномиальные коэффициенты и обозначается C(k1,k2,,km) Будем набирать эти множества по очереди. Количество способов выбрать первое подмножесто равно Cnk1, второе Cnk1k2 и так далее. Итоговая формула C(k1,k2,,km)=Cnk1Cnk1k2Ckmkm=n!k1!k2!km!.

Аналогично биному Ньютона, такие числа являются коэффициентами при членах x1k1x2k2xmkm выражения (x1++xm)n. Доказательство тоже аналогично доказательству из предыдущего раздела и оставляется в качестве упражнения.

Числа Каталана

Посчитаем количество правильных скобочных последовательностей (ПСП). Интуитивно понятно, что это, но формально они определятюся так: - Пустая последовательность является ПСП - Если A является ПСП, то (A) является ПСП - Если A и B являются ПСП, то AB является ПСП.

Теперь, посчитаем количество ПСП с 2n скобками. Это называется числами Каталана и обозначается Cn. Рассмотрим первое место, где разность количества открывающих и закрывающих скобок впервые становится равна 0 и часть ПСП до этого места обозначим (A), а часть после обозначим B. Понятно, что A и B являются ПСП меньшего размера (возможно, пустыми).

Теперь Cn посчитать легко, перебирая размер A.

C0=1

Cn=C0Cn1+C1Cn2++Cn1C0

Полезные формулы

В качестве упражнения попробуйте их доказать.