Страницы

Поиск по вопросам

пятница, 10 января 2020 г.

Можно ли узнать пересечение N множеств по частям <N?

#множества #алгоритм


Есть списки уникальных целых значений. Каждый список назову «множеством».
Есть возможность узнавать кол-во уникальных элементов для максимум M множеств. Например:
/* допустим, мн-ва A и B такие, на деле состав множеств неизвестен */
A = [1,2,3]
B = [2,3,4,5]
/* можем задавать такие запросы и получать такие результаты: */
unique(A,B) = 5  /* 1,2,3,4,5 */
unique(A) = 3
unique(B) = 4

Хочется узнать кол-во общих элементов для N множеств, где N > M. Возможно ли это
в заданных условиях?
Запросов про unique() можно делать много. Как отсюда можно прийти к числу общих,
для 2, понятно:
unique(A) + unique(B) - unique(A,B) = общее ядро A и B

3 + 4 - 5 = 2 в примере выше.
Не соображу, как поступать с бОльшим числом множеств. К сожалению, прогулял теорию
множеств в своё время, поэтому прошу помощь у зала.    


Ответы

Ответ 1



Задача в общем случае нерешаема. Пример: пусть M = 1, N = 2, все множества одноэлементные. Вы никак не сможете узнать, эти множества совпадают или нет.

Комментариев нет:

Отправить комментарий