операции с постоянным временем - PullRequest
0 голосов
/ 18 октября 2010

Существуют ли алгоритмы постоянного времени для пересечения и объединения двоичных множеств?

Я представляю себе использование растровых изображений с указателями на элементы в памяти и использование ИЛИ для объединения и И для пересечения.

Есть ли у кого-нибудь сейчас решение?

1 Ответ

1 голос
/ 18 октября 2010

Это постоянное время до 32 элементов с классом BitArray.Вы можете написать собственный, чтобы получить до 64 элементов, используя базовый ulong [].Неуправляемый код делает возможным 128 элементов с помощью встроенных функций _mm_or_si128 и _mm_and_si128.Трудно использовать из-за требований к выравниванию памяти, не может получить это из кучи мусора.

Это не практичные суммы в большинстве случаев, когда вы хотите оптимизировать этот вид кода.По сути, это алгоритм O (n) с очень маленьким Oh.Можно также использовать BitArray.

...