Хорошо известны две комбинаторные формулы:
и
.
Первая дает число разных сочетаний размера
в случае, когда у нас
типов объектов, и все в одном экземпляре.
Вторая дает число разных сочетаний размера
в случае, когда у нас
типов объектов, и все в неограниченном количестве.
На практике часто встречается промежуточный случай, когда есть
типов объектов, причем объектов одного типа одно количество, другого типа - другое и т.д. Как получить число сочетаний из
типов объектов по
, если известны количества
объектов каждого типа?
Например, возьмем множество объектов
. Здесь
,
,
,
. Допустим, мы хотим найти количество всех различных сочетаний по
(
). Они будут такими:
Какая формула описывает их количество в общем случае?
Предположим, что
отсортированы по возрастанию.
Очевидно, что если
, то задача сводится к неограниченному случаю
.
Если
, но
то можно из неограниченного случая
вычесть число комбинаций, в которых объект с количеством
используется более
раз, т.е.
. Такое же вычитание можно сделать и для
, если одновременно
,
, но
Но если суммарное количество обьектов двух (а тем более нескольких) самых малочисленных типов слишком мало, т.е.
, то просто так вычесть независимо все лишние комбинации отдельно для
и отдельно для
не получается. Некоторые комбинации удаляются дважды. Например, если применить этот принцип к задаче выбора четырех разных объектов из набора
то "запрещенная" комбинация
вычитается два раза отдельно по
и отдельно по
.