Я столкнулся с проблемой, когда мне приходится вычислять пересечения между всеми парами в наборе множеств. Ни один из наборов не меньше небольшой константы k, и меня интересует только то, имеют ли два набора пересечение больше, чем k-1, или нет. Мне не нужны фактические пересечения или точный размер, только если он больше, чем k-1 или нет. Есть ли какой-то умный трюк предварительной обработки или опрятный алгоритм пересечения, который я мог бы использовать для ускорения работы?
Дополнительная информация, которая может быть полезна для ответа на вопрос:
- Наборы представляют максимальные клики в большом, неориентированном, разреженном графике. Количество наборов может быть порядка десятков тысяч или более, но большинство наборов, вероятно, будут небольшими.
- Наборы
уже отсортированычлены каждого набора в порядке возрастания. Эффективно они отсортированы списки - я получаю их таким образом из базовой библиотеки для максимального поиска клики. - Ничего не известно о распределении элементов в наборах (т.е. находятся ли они в узких группах или нет).
- Большинство установленных пересечений, вероятно, будут пустыми, поэтому идеальным решением будет умная структура данных, которая поможет мне сократить количество заданных пересечений, которые я должен выполнить.