Найти все уникальные подмножества набора значений
У меня проблема с алгоритмом. Я пытаюсь найти все уникальное подмножество значений из большего набора значений.
Например, скажем, у меня есть набор{1,3,7,9}
, Какой алгоритм я могу использовать, чтобы найти эти подмножества 3?
{1,3,7} {1,3,9} {1,7,9} {3,7,9}
Подмножества не должны повторяться, и порядок не важен, набор {1,2,3} такой же, как набор {3,2,1} для этих целей. Псудокод (или обычный вид) приветствуется.
Подход грубой силы, очевидно, возможен, но не желателен.
Например, такой метод грубой силы будет следующим.
for i = 0 to size for j = i + 1 to size for k = j + 1 to size subset[] = {set[i],set[j],set[k]}
К сожалению, для этого требуется дополнительный цикл для каждого элемента, требуемого в подмножестве, что нежелательно, если, например, вы хотите подмножество из 8 элементов.