Задать вопрос
alekciy
@alekciy
Вёбных дел мастер

Как найти все возможные не повторяющиеся пересечения множеств?

Мне нужно вычислить количество возможных комбинаций которые можно получить комбинируя множества (как я понимаю смесь из комбинаторики и декартово произведение). Я знаю, как вычислить число сочетаний без повторений для одного множества: n!/m!*(n-m)!, где n - количество элементов заданного множества, m - количество сочетаний (разрядов). Но если нужно скомбинировать несколько множеств?

Пример. Первое множество X={1,2,3}, второе множество Y={4,5}, третье множество Z={6,7}. Я хочу получить все возможные сочетания при одиночном, двойном и тройном комбинировании. Руками если считать получается (порядок в комбинации значения не имеет, повторов быть не должно, все элементы множеств уникальны):

m=1: {1}, {2}, {3}, {4}, {5}, {6}, {7}, т.е. 7 комбинаций
m=2: {1,4}, {1,5}, {1,6}, {1,7}, {2,4}, {2,5}, {2,6}, {2,7}, {3,4}, {3,5}, {3,6}, {3,7}, {4,6}, {4,7}, {5,6}, {5,7}, т.е. 16 комбинаций
m=3: {1,4,6}, {1,4,7}, {1,5,6}, {1,5,7}, {2,4,6}, {2,4,7}, {2,5,6}, {2,5,7}, {3,4,6}, {3,4,7}, {3,5,6}, {3,5,7}, т.е. 12 комбинаций

Итого можно получить 7+16+12=35 комбинаций. Существует ли универсальная формула подсчета для такой задачи?
  • Вопрос задан
  • 2104 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Как я понимаю, общих элементов нет.
На примере 3-х множеств с мощностями a, b и c.
m=0: 1 комбинация
m=1: a + b + c комбинаций
m=2: a*b + b*c + a*c комбинаций
m=3: a*b*c комбинаций

Итого
1 + a + b + c + ab + bc + ca + abc
1 + a + b + ab + c*(1 + a + b + ab)
(1 + a + b + ab)(1 + c)
...
(1 + a)(1 + b)(1 + c)

На ваших данных получаем 4*3*3 = 36

Ответ подсказывает и принцип, как его посчитать. Из одного множества можно выбрать 1 + a способами: либо не берём (пустое множество), либо берём a способами.
Если добавить новое множество в рассмотрение, то либо мы из него не берём элемент, либо тоже берём, b способами, итого: (1+a)(1+b). Т.е. каждое множество Aᵢ даёт нам 1+|Aᵢ| новых вариантов, где |A| - мощность (кол-во элементов) множества A.
Т.о. ответ: ∏(1+|Aᵢ|)

Учтите, что эта формула учитывает так же и единственный вариант выбрать 0 элементов (результат - пустое множество), соот-но от того, что вы посчитали в вопросе отличается на единицу (36 вместо 35).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы