しきい値Tとビットマップのセットが与えられたら、iのビットが "1"にセットされている場合にのみ "br"のi番目のビットが1になるように結果のビットマップ "br"第1ビットは1以上のビットマップに設定される。条件付き論理AND演算子
私は一例で私の質問を説明しようとします: 私たちは4ビットマップを持っている(の等長の)と仮定しましょうT = 3:
b1 (10000)
b2 (01110)
b3 (10110)
b4 (00010)
その後、私の結果のビットマップBR =(00010 ) - 4ビット目のみが> 3ビットマップで1に設定されているためです。 T = 2ならば、br =(10110)。
これを行う単純な方法は、各ビットマップを反復し、i番目のインデックスにビット 'i'の数を格納するベクトルを保持することです。その後、この「カウント」ベクトルを反復することができます。
もう一つの方法は、結果のビットマップでi> = Tの位置に1に設定されている場合、i番目のビットが1に設定されるように変更された論理AND演算子を実装することです。
他に効率的な方法がありますか?私はC++とEWAHBoolArray(https://github.com/lemire/EWAHBoolArray)ライブラリを使用しています。現在、複数のビットマップ間でAND演算を実行する機能はありません。 すべての応答は非常に高く評価されています!
あなたはそれがDjのi番目のビットがビットマップの数である二進数のj番目の桁であるDJはビットマップBの和のj番目の桁であるようないくつかのビットマップDを、(持つことができ(集合Bの)位置iを1とする。あなたの例では、{(01010)(10110)(00000)}になります。 – Beta
ひどい質問ですが、[MCVE]についてお読みください。 –