У меня есть несколько наборов, таких как:
A={0, 2, 3, 4}
B={1, 2, 4}
C={0, 1, 5}
Затем я нашел подмножества каждого набора:
SubsetA=[{0}, {2}, {3}, {4}, {0, 2}, {0, 3}, {0, 4}, {2, 3}, {2, 4}, {3, 4}, {0, 2, 3}, {0, 2, 4}
{0, 3, 4}, {2, 3, 4}, {0, 2, 3, 4}]
SubsetB=[{1}, {2}, {4}, {1, 2}, {1, 4}, {2, 4}, {1, 2, 4}]
SubsetC=[{0}, {1}, {5}, {0, 1}, {0, 5} {1, 5}, {0, 1, 5}]
Я хотел бы найти дублированные подмножества удалить их из окончательного вывода. Например, результат вышеприведенного примера равен 24 , поскольку после удаления дубликатов осталось 24 подмножества:
{0}, {2}, {3}, {4}, {0, 2}, {0, 3}, {0, 4}, {2, 3}, {2, 4}, {3, 4}, {0, 2, 3}, {0, 2, 4}
{0, 3, 4}, {2, 3, 4}, {0, 2, 3, 4}, {1}, {1, 2}, {1, 4}, {1, 2, 4}, {5}, {0, 1},
{0, 5}, {1, 5}, {0, 1, 5}
Я могу найти все подмножества с помощью python скрипт (он находит подмножества только одного набора); однако я не уверен, как найти дублированные подмножества нескольких наборов и удалить их.
Мне не нужно генерировать эти подмножества. Вместо этого мне нужно найти только число 24. Как в приведенном выше примере.
Примечание: у меня есть максимум 4 комплекта с размерами в диапазоне от 15 до 35 следующим образом:
A={32, 33, 8, 9, 10, 11, 12, 13, 14, 15, 27, 28, 29, 30, 31}
B={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 34, 35, 36, 37, 38, 39, 40, 41}
C={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 35, 43}
D={34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48}
Is есть предложения?
мой код подмножества:
def subsetsUtil(A, subset, index):
print(*subset)
for i in range(index, len(A)):
# include the A[i] in subset.
subset.append(A[i])
# move onto the next element.
subsetsUtil(A,subset, i + 1)
# exclude the A[i] from subset and
# triggers backtracking.
subset.pop(-1)
return
# below function returns the subsets of vector A.
def subsets(A):
global res
subset = []
# keeps track of current element in vector A
index = 0
subsetsUtil(A, subset, index)
# Driver Code
# find the subsets of below vector.
array = [0, 2, 3, 4]
# res will store all subsets.
# O(2 ^ (number of elements inside array))
# because at every step we have two choices
# either include or ignore.
subsets(array)