我々は現在、興味深い問題に直面している。 すべての単一項目を保存する必要なしにセットのカーディナリティ(一般的にはビットマップ/ビットセットは良いアプローチです)をご希望です。非常に優れたアルゴリズムは、いわゆるHyperLogLogランダムアルゴリズムです(詳細はhttp://antirez.com/news/75を参照してください)。論理集合演算のカーディナリティ近似 - (AND/OR/XORの "HyperLogLog")
ここでの問題は、あなたがだけなので基本的にはOR組み合わせだ、のUNIONとしてセットをマージすることができていること、です。
実際には、セットをORで組み合わせるだけでなく、ANDで組み合わせることも望みます。我々はこれらの操作を組み合わせたいと思っています。
例: SET1 AND(SET2 OR SET3)OR(SET4 AND set5)
各セットは、何百万の範囲の基数を有していてもよいです。各値のサイズは128ビットです。
各セットは、任意の方法で表現できます。 "HLL、ブルームフィルタ、プレーンリスト、またはこれらの組み合わせ"。アルゴリズムは、可能な限りのスペースを使用して最短時間で実行する必要があります。
アイデア?
セットはそれらの構造だけで表現する必要がありますか、または追加の構造を使用できますか?つまり、HLLとMinHashを混在させると、設定された交差のカーディナリティをかなり簡単に見積もることができます。 –