2016-09-22 54 views
0

我在我的域中有多個屬性,並希望找到所有或多個屬性上的用戶。算法來檢查多個屬性之間的普通用戶

您可以使用的情況是這樣的:

property 1: {User A,User B,User C,User D } 
property 2: {User A,User B,} 
property 3: {User A,User B,User C} 

那麼結果會是這樣的:

物業1,2,3有50%相同的用戶
物業1,2有50%的同一用戶
屬性2,3有50%的同一用戶
屬性1,3有75%的同一用戶

這裏的問題是用戶數以百萬計(超過2000萬)。
我不能使用標準方法來使用任何列表方法,因爲尺寸會非常大。

你能幫我找到一個很好的算法,這個用例的速度足以保存這種數據。

+0

什麼是屬性的最大數量? –

回答

0

爲每個用戶使用屬性的位圖。我們有3個屬性在這裏,所以我們需要大小爲3個比特的位圖的每個用戶

BITMAP : ABC => A = 0 or 1, B=0 or 1, C=0 or 1. 

User 1 -> 111 
User 2 -> 111 
User 3 -> 101 
User 4 -> 100 

現在對於任何查詢,編寫查詢作爲位圖,發現其用戶包括位。

例如, 查詢:屬性1,2 位圖 - > 110

Only user 1,2 include this bitmap. 
Ans = 2/4 = 50%. 

如果屬性的數目並不大(< 64或< 128),可以使用整數等爲更快的計算。

相關問題