Сгенерировать все «уникальные» подмножества набора (не набора мощности)

Допустим, у нас есть набор S , который содержит несколько подмножеств:

- [a,b,c]
- [a,b]
- [c]
- [d,e,f]
- [d,f]
- [e]

Предположим также, что S содержит шесть уникальных элементов: a, b, c, d, e и f .

Как мы можем найти все возможные подмножества S , которые содержат каждый из уникальных элементов S ровно один раз?

Результат функции / метода должен быть примерно таким. что:

  1. [[a, b, c], [d, e, f]];
  2. [[a, b, c], [d, f], [e]];
  3. [[a, b], [c], [d, e, f]];
  4. [[a, b], [c], [d, f], [e]].

Есть ли какая-нибудь передовая практика или какой-либо стандартный способ достичь этого?

Я был бы признателен за пример с псевдокодом, Ruby или Erlang.

7
задан skanatek 27 December 2011 в 10:50
поделиться