Я пытаюсь найти эффективный способ получить набор подмножеств PowerSet.
Например, это работает, когда размеры набора невелики:
Set<Integer> set = new HashSet<Integer>();
set.add(1);
set.add(2);
set.add(3);
Set<Integer> set2 = new HashSet<Integer>();
set2.add(3);
Set<Set<Integer>> sets = MyUtils.powerSet(set); //size - 8 SubSets
Set<Set<Integer>> badSets = MyUtils.powerSet(set2); //size - 2 SubSets
//my set of subsets of the powerset
sets.removeAll(badSets) //size - 6 SubSets
Однако, когда в эти наборы добавляется больше элементов, это не становится практичным.Есть ли другой способ сделать это?
Просто дружеское напоминание о том, что такое PowerSet:
PowerSet of {a, b, c}:
P (S) ={{}, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c}}