我們目前正面臨一個有趣的問題。我們想估計集的基數,而不需要存儲每一個項目(通常位圖/位集是一個不錯的方法)。一個非常好的算法就是所謂的HyperLogLog隨機算法(更多在這裏查看http://antirez.com/news/75)。邏輯集操作的基數近似 - (「與/或/異或」的「HyperLogLog」)
這裏的問題是,你只能合併集作爲的UNION,所以基本上這是一個或組合。
我們實際上不僅需要將集合與OR結合,而且還要與AND結合使用。我們甚至想要結合這些操作。
實施例: SET1 AND(SET2 OR SET3)OR(AND SET4 SET5)
每一組可以具有數百萬範圍內的基數。每個值都有128位的大小。
每組可以以任何方式表示,例如, 「HLL,布隆過濾器,普通列表或這些的組合」。該算法必須使用可行的空間量在儘可能短的時間內執行。
任何想法?
集合是否需要僅由那些結構表示或可以使用其他結構?我的意思是,如果您將HLL與MinHashes混合使用,則可以輕鬆估計集合交集的基數。 –