Эффективное пересечение множеств - решите, больше ли пересечение k

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

Дополнительная информация, которая может быть полезна для ответа на вопрос:

  • Множества представляют собой максимальные клики в большом, неориентированном , разреженный граф. Количество наборов может быть порядка десятков тысяч или более, но большинство наборов, вероятно, будут небольшими.
  • Наборы уже отсортированы элементы каждого набора находятся в порядке возрастания. Фактически они представляют собой отсортированные списки - я получаю их таким образом из базовой библиотеки для поиска по максимальным кликам.
  • Ничего не известно о распределении элементов в наборах (т.е. находятся ли они в тесных группах или нет).
  • Большинство из установленных пересечений скорее всего будут пустыми, Существуют ли какие-либо продукты, которые добавляют файловую систему в Windows?

    Мне любопытны две вещи,

    1. Какой ближайший эквивалент / proc, который поставляется с Windows
    2. Есть ли продукты, которые добавляют proc как файловая система в Windows?

6
задан Andrew Grimm 6 October 2011 в 23:11
поделиться