Algorithm N位整数匹配算法

Algorithm N位整数匹配算法,algorithm,firebase-realtime-database,correlation,matching,bipartite,Algorithm,Firebase Realtime Database,Correlation,Matching,Bipartite,我试图写一个算法来建立值“1”的n位整数之间的相关性 下面是一个5位整数的示例:0,1,0,0,1 我想确定这个整数和一组N个其他整数之间的相关性百分比 例如,整数A(0,1,0,0,1)和整数B(0,1,0,0,0)对于值“1”具有0,5的相关性,因为只有第二位匹配。 在我的Firebase数据库中,我将一个n位整数附加到每个用户的ID上,我希望与我的应用程序的每个其他用户的n位整数进行匹配,以获得每个用户之间的关联类型。 用户之间总相关性的分布将遵循高斯曲线,我希望在将来使用该曲线来匹配用户

我试图写一个算法来建立值“1”的n位整数之间的相关性

下面是一个5位整数的示例:0,1,0,0,1

我想确定这个整数和一组N个其他整数之间的相关性百分比

例如,整数A(0,1,0,0,1)和整数B(0,1,0,0,0)对于值“1”具有0,5的相关性,因为只有第二位匹配。 在我的Firebase数据库中,我将一个n位整数附加到每个用户的ID上,我希望与我的应用程序的每个其他用户的n位整数进行匹配,以获得每个用户之间的关联类型。 用户之间总相关性的分布将遵循高斯曲线,我希望在将来使用该曲线来匹配用户

例如:我希望用户A与其他所有用户进行匹配,这些匹配按亲和力的降序排序(从高到低的n位整数相关性)

你们知道我如何执行算法来建立N个用户之间的相关性,然后执行另一个算法来将这些相关性从高到低排序吗? 任何帮助都将不胜感激

谢谢你抽出时间


Maxime

您可以使用and操作获得结果R

例如:

A = 9  = 01001
B = 8  = 01000
C = 7  = 00111
D = 31 = 11111

R = A & B gives 8 = 01000, the correlation is counting the ones: R/A = 1/2 = 0,5. 

R = A & C gives 1 = 00001, the correlation: R/A = 1/2 = 0,5.

R = A & D gives 9 = 01001, R/A = 2/2 = 1.
这里有个问题。您可以通过使用num中出现的最大值来解决这个问题,比如R/max(A,D)

我认为最好使用总位计数(这里是5)

结果将会很好

corr AB = 1/5 = 0,2
corr AC = 1/5 = 0,2
corr AD = 2/5 = 0,4
corr CD = 3/5 = 0,6

是0,5还是0.5?我真的很好奇。但我没有得到这种相关性的例子。你能简单介绍一下你的相关例子吗?谢谢,非常感谢你的回复。抱歉,如果不清楚的话,我的意思是0.5,因为它们的整数中的两个“1”值中有一个“1”值与“1”值相同。这听起来像是在求位条件下的汉明距离。我想这里至少有两个问题:1)给定M个项,每个项都有N位值,绘制每对项目之间的M^2相关性。2) 从单个项目中,在数据库中查找密切相关的用户。N有多大?是不是少于64?您只是将密钥存储为Int吗?嗨,Aldert,谢谢您的回复。我采用了与你在文章中描述的非常相似的路径,以与此相同的方式计算相关性,基本上是
correlation=size(交集(a,B))/max(size(a),size(B))
。除此之外,集合A和B是位整数,用总位计数计算R。然后,我将相同的整数捆绑到桶中,并根据相关性(它们之间的相关性从高到低)对它们进行排序。现在,我所有的努力都集中在从Firebase请求这些数据上……因此,如果您的“位整数”是数据库密钥,那么您可以查询具有完全相同位集的任何用户。如果这不能产生足够的结果,您可以查询N个仅相差1位的键中的任何一个。然后N^2个键相差2位…我假设您有一个用户,并且正在尝试查找匹配项。你真的在试图找到最匹配的M个用户吗?嗨,AShelly,这正是我正在实现的,我正在尝试找到最匹配的M个用户,我将使用你提到的查询!你说得对,谢谢!