У меня есть массив битовых векторов в форме BitSet в Java.Моя цель - проверить, имеют ли эти битовые векторы пересечения (все имеют 1 с хотя бы в одном бите).Мое текущее решение заключается в использовании и работе, предлагаемой BitSet в Java.
BitSet[] bitVecs = new BitSet[10]
//
// initialize all bit vectors and their lengths are 100 ...
//
BitSet check = new BitSet(100); //
check.set(0, 100);
for (int i = 0; i < bitVecs.length; i++) {
check.add(bitVecs[i]);
if (check.isEmpty())
return false // we know the bitVecs do not intersect
}
return true; // we know bitVecs intersects
BitSet имеет функцию intersects
и должен быть быстрее, чем and
, но он проверяет только два битовых вектора и не более.Я ценю, если кто-нибудь знает, как сделать это быстрее.