Я не смог найти удовлетворительное освещение этой темы в одном месте, поэтому мне было интересно:
Каковы наиболее быстрые алгоритмы пересечения, объединения и расцепления?
Есть ли интересные объекты с ограниченными доменами?
Может ли кто-нибудь победить O (Z), где Z - фактический размер пересечения?
Если ваш подход зависит от отсортированных наборов, обратите внимание на это, но не считайте его дисквалифицирующим фактором. Мне кажется, что должен быть настоящий склад тонких оптимизаций для совместного использования, и я не хочу пропустить ни одного из них.
Несколько алгоритмов, которые, как я знаю, полагаются на побитовые операции за ванилью, поэтому вы можете предположить наличие SSE4 и доступ к внутренним активам, таким как popcount. Обратите внимание на это предположение.
Интерес: Реализация пересечения B-Y
Обновление
У нас есть очень хорошие частичные ответы, но я все еще надеюсь на более полные атаки на проблему. Мне особенно интересно видеть более полное артикулированное использование фильтров цветения в атаке на проблему.
Обновление
Я провел предварительную работу по объединению фильтров цветка с хеш-таблицей кукушки. Это выглядит почти неприлично многообещающим, потому что у них очень похожие требования. Я пошел вперед и принял ответ, но на данный момент я не очень доволен.