ML Wiki
Machine Learning Wiki - A collection of ML concepts, algorithms, and resources.

Combinations

Combinations

Не всегда нас интересует порядок, в котором располагаются элементы - а интересует лишь состав.

Combinationsми размера $k$ из $n$ элементов называют всевозможные расстановки длины $k$, составленных из этих элементов и отличающихся лишь составом, а не порядком элементов.

$C_n^k$ - число сочетаний размера $k$, которые можно составить из $n$ элементов.

Сначала составим все сочетания размера $k$ из $n$ элементов, а потом переставим элементы в них всеми возможными способами - и получим все возможные размещения размера $k$ из $n$ элементов. Из каждого сочетания можно сделать $k $ перестановок, значит,   $k \cdot C_n^k = A_n^k, C_n^k = \frac{A_n^k}{k!} = \frac{n!}{(n - k)! \cdot k!}$   Эта функция совпадает с формулой для числа перестановок из $k$ элементов одного типа и $(n-k)$ элементов второго типа

$P(n, n-k) = \frac{n| }{k! \cdot (n - k)!} = C_n^k$ | |Расставим по порядку все $n$ элементов и зашифруем каждое сочетание расстановкой размера $n$, состоящей из нулей и единиц. Если элемент входит, запишем 1, иначе 0. При этом каждому сочетанию будет соответствовать расстановка из $k$ единиц и $(n - k)$ нулей.

Задача

Сколькими способами можно поставить 8 ладей на поле 8 $\times$ 8? (Так, что они могут бить друг друга, а могут и не бить.)

  • Нам нужно выбрать из 64 клеток любые 8.
  • Следовательно, $C_{64}^8 = \frac{64| }{8! \cdot 56!}$ | |

    Combinations с повторениями

    Имеется $n$ различных типов предметов. Сколько комбинаций размера $k$ можно сделать из них, если не принимать во внимание порядок элементов в комбинациях?

=== Мотивирующий пример === В кондитерском магазине продают 4 типа пирожных: наполеон, эклеры, песочные и слоёные. Сколькими типами можно купить 7 пирожных?

Способ 1

  • Зашифруем каждую покупку с помощью единиц и нулей.
  • Сначала запишем сколько было куплено наполеонов, затем ноль, затем количество эклеров, ноль, песочных, ноль, и, наконец, слоёных.
  • Получим $\underbrace{111} 0 \underbrace{1} 0 \underbrace{11} 0 \underbrace{1}$
  • Разным покупкам при этом соответствуют различные перестановки с повторениями

$P(7, 3) = \frac{10| }{7! \cdot 3!} = 120$ | |#### Способ 2

  • Расположим в каждой покупке пирожные по порядку (наполеоны, эклеры, песочные, слоёные)
  • Затем пронумеруем их, при этом к номерам наполеонов прибавляя 0, к номерам эклеров 1, песочных 2, слоёных - 3.
  • Самый большой номер - 7 + 3 = 10 для слоёного пирожного
  • Самый маленький номер - 1 + 0 = 1 для наполеона
  • Ни один номер при этом не будет повторятся и каждой возрастающей последовательности из 7 чисел будет соответствовать некоторая покупка

Например, имеем последовательность (2, 3, 4, 5, 7, 8, 9). Отнимем (1, 2, 3, 4, 5, 6, 7) и получим (1, 1, 1, 1, 2, 2, 2). Т.е. имеем 4 эклера (к эклерам мы прибавляли 1) и 3 песочных (к их номерам прибавляли 2).

  • Таким образом, число способов купить 7 пирожных равно числу способов выбрать 7 предметов из 10:
  • Ответ $C_{10}^7 = 120$

В общем случае задачи на сочетания с повторениями решаются так же.

Зашифруем каждую комбинацию нулями и единицами

  • для каждого типа единицами запишем сколько предметов входит в комбинацию
  • и разделим типы предметов между собой нулями

При этом получится столько единиц, сколько предметов нам нужно выбрать, т.е. $k$, и $(n - 1)$ нулей

  • $\bar{C_n^k} = P(k, n - 1) = \frac{(k + n - 1) }{k! \cdot (n - 1)!}$ - Следовательно, $\bar{C}n^k} = C{n + k - 1}^k$.

Аналогично можно прийти к этой формуле и вторым способом.

Разновидность

Встречаются задачи, в которые обязательно нужно включить элементы $r$ фиксированных типов, $r \leqslant n$

Для этого

  • возьмем $r$ элементов нужного типа
  • оставшиеся $k - r$ мест заполним остальными элементами, принадлежащими всем $n$ типам.

Итого, имеем формулу $\bar{C}n^{k - r}} = C{n + k - r - 1}^{k - r}$

Свойства сочетаний

Свойство 1

$C_n^k = C_n^{n - k}$

  • Очевидно из формулы $C_n^k = \frac{n| }{(n - k)! \cdot k!}$ |- Если в формуле заменить $k$ на $(n - k)$, то $n - k$ заменится на $n - (n - k) = k$ - и множители просто поменяются местами |

    Свойство 2

    $C_n^k = C_{n - 1}^{k - 1} + C^k_{n - 1}$

  • Составим все сочетания размера $k$ из $n$ элементов $a_1, a_2, …, a_n$ и разобъем на две группы:
    • в первых будут элементы, содержащие $a_n$
    • во второй не будет элементов, содержащих $a_n$
  • если в первой группе откинуть $a_n$ (т.к. оно есть везде, то на количество сочетаний это не повлияет), то получится сочетания размера $k - 1$, составленные из элементов $a_1, a_2, …, a_{n - 1}$ (всего $n - 1$ элементов) .
    • Число сочетаний в первой группе равно $C_{n - 1}^{k - 1}$
  • сочетания второй группы являются сочетаниями размера $k$, составленные из $n - 1$ элементов $a_1, a_2, …, a_{n - 1}$
    • Число сочетаний во второй группе равно $C_{n - 1}^k$
  • По правилу суммы, общее число сочетаний равняется $C_{n - 1}^k + C_{n - 1}^{k - 1} = C_n^k$

Свойство 3

$\sum_{k = 0}^n C_n^k = 2^n$

  • $2^n$ - число всех размещений с повторениями из элементов ‘‘двух типов’’.
  • Разобьём эти размещения на $k$ групп
  • в $k$-ю группу отнесем те элементы, в которые входят $k$ элементов первого типа и ($n - k$) элементов второго типа
  • размещения, входящие в $k$-ю группу - всевозможные перестановки из $k$ элементов первого типа и $n - k$ второго
  • число таких перестановок равно $P(k, n - k)$, а $P(k, n - k) = C_n^k$

В общем виде эту формулу можно записать так:

$\sum_{n_1 + … + n_k = n} P(n_1, …, n_k) = k^n$

(свойства 4 и 5 опущены - см. Виленкина)

=== Свойство 6 === $C_n^0 - C_n^1 + … + (-1)^n C_n^k = 0$

  • $C_n^0 = C_{n - 1}^0 = 1$
  • т.к. $C_n^1 = C_{n - 1}^0 + C_{n - 1}^1$, то $C_{n - 1}^0 - C_n^{1} = -C_{n - 1}^2$
  • далее, имеем $-C_{n - 1}^2 + C_n^2 = C_{n - 1}^2$
  • В конце концов все слагаемые взаимоуничтожаются

Некоторые свойства (особенно 3 и 6) очень легко доказываются с помощью бинома Ньютона

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

Биномиальные коэффициенты можно вычислять с помощью свойства 2: $C_n^k = C_{n - 1}^{k - 1} + C^k_{n - 1}$. Если расположить $C_n^k$ по середине под $C_{n - 1}^{k - 1}$ и $C^k_{n - 1}$, то числа выстроятся в треугольник

Задача

<img src=”Image” />

Сколькими способами можно добраться из вершины $A$ в вершину $B$, если двигаться можно только “вправо” и “вверх”?

<img src=”Image” />

  • Если записать число способов, которыми можно попасть в определенный узел, то мы увидим треугольник Паскаля.
  • Действительно, в $k$-й узел $n$-й строки можно попасть либо из $(k-1)$-того, либо из $k$-го узла
  • Поэтому число путей, ведущих в этот узел есть $C_n^k = C_{n - 1}^{k - 1} + C^k_{n - 1}$

Таким образом мы можем сформулировать одно из свойств треугольника Паскаля: Каждое число в треугольнике равно количеству способов добраться до него из вершины, перемещаясь либо вправо-вниз, либо влево-вниз.

See also

Sources

  • Виленкин Н.Я. Комбинаторика. М., Наука, 1969.
  • Генкин С.А., Итенберг И.В., Фомин Д.В. Ленинградские математические кружки, 1994.