Maxime
Maxime

Reputation: 729

N bits integer matching algorithm

I am trying to write an algorithm to establish correlation between n bits integers for the value “1”.

Here is an exemple of a 5 bits integer: 0,1,0,0,1

I want to establish the percentage of correlation between this integer and a set of N other integers.

For example, Integer A(0,1,0,0,1) and Integer B(0,1,0,0,0) have a correlation of 0,5 for the value “1” as only the second bit is matching. In my Firebase database, I have one n bits integer attached to each user_ID that I want to match against the n bits integer of every other user of my application to get a type of correlation between each user. The distribution of the total correlations between users will follow a Gaussian curve that I want to use in the future to match users with each other.

For example: I want user A to be matched with every other user with these matches sorted by decreasing order of affinity (from high to low correlation between their n bits integers).

Do you guys have any idea how I could perform the algorithm to establish the correlation between the N number of users and then perform another algorithm to sort these correlations from high to low? Any help would be greatly appreciated.

Thank you for your time,

Maxime

Upvotes: 0

Views: 118

Answers (1)

Aldert
Aldert

Reputation: 4323

you can use the and operation to get the Result R.

Example:

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.

Here we have a problem. you can solve this by using the max of the ones occuring in the num like R/max(A,D)

I believe it is better to use the total bit count (here 5).

results would be.

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

Upvotes: 1

Related Questions