Пусть S (w) - набор слов. Я хочу сгенерировать все возможные n-комбинации подмножеств s, чтобы объединение этих подмножеств всегда было равно S (w).
Итак, у вас есть набор (a, b, c, d, e), и вам не нужны все 3 комбинации:
((a, b, c), (d), (e))
((a, b), (c, d), (e))
((a), (b, c, d), (e))
((a), (b, c), (d, e))
и т.д ...
Для каждой комбинации у вас есть 3 набора, и объединение этих наборов является исходным набором. Нет пустого набора, нет пропущенного элемента.
Должен быть способ сделать это с помощью itertools.combination + collection.Counter, но я даже не могу где-то начать ... Может кто-нибудь помочь?
Люк
РЕДАКТИРОВАТЬ: мне нужно было бы захватить все возможные комбинации, в том числе:
((a, e), (b, d) (c))
и т.д ...
(('e', 'd', 'c'), ('b',), ('a',))
, а предпоследний результат -(('e', 'd', 'c'), ('a',), ('b',))
. Вы этого хотели? Если это так, возможно, вам следует изменить заголовок на перестановки, а не на комбинации. - person Paulo Almeida   schedule 10.08.2013