Java:检查多个位向量/位集是否相交的最快方法?

Java:检查多个位向量/位集是否相交的最快方法?,java,bitmap,bit-manipulation,bitwise-operators,bitset,Java,Bitmap,Bit Manipulation,Bitwise Operators,Bitset,在Java中,我有一个位向量数组,其形式为位集。我的目标是检查这些位向量是否在至少一个位中都有交点。我当前的解决方案是使用Java中BitSet提供的和操作 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 =

在Java中,我有一个位向量数组,其形式为位集。我的目标是检查这些位向量是否在至少一个位中都有交点。我当前的解决方案是使用Java中BitSet提供的和操作

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快,但它只检查两个位向量,不检查更多。如果有人知道如何加快速度,我将不胜感激。

我将做一些假设。看起来你要处理的是10d空间中的单位向量列表。问题是如何定义向量。从原点开始,在相应标注为1而不是0的任何方向上移动1个单位。所有向量都会在原点相交,如果它们是同一个向量,则在无穷多点相交。向量只是用来定义直线的斜率。您还需要一些其他向量来定义偏移。你需要做的是把向量变成线,然后你就能知道它们是否相交