如何基于共同的朋友为Facebook用户推荐朋友列表?

时间:2010-10-26 04:01:51

标签: algorithm facebook

我正在构建一个应用程序,根据他/她与每个朋友的共同朋友推荐Facebook用户的朋友列表。我的想法看起来像那样:

  

http://i219.photobucket.com/albums/cc213/DoSvn/example03.png

我可以和他/她的朋友(b1,b2 ......)得到A的所有共同朋友。这是b1,b2 ...(c1,c2 ......)之间的交集。我想把朋友分成几个小组,如:

  

b1,b2,b3组; b1,b4在一组; b5,b6组; b7,b8在一个小组中

可能只选择b1,b2,b3组,因为它通过b1更大也在另一组中。我尝试了一个想法:

  1. 创建了很多组(我试过200个),每个组都包含一些共同朋友的列表(它是“c”,我试过5个)。
  2. 使用小组,找出路口并将其推入另一个列表。
  3. 在第2步之后,我有一个包含交叉点的列表。我根据每个十字路口的大小来安排它并获得最大的交叉点(我试过3和5)。
  4. 在选择了每个交叉路口后,我发现有共同朋友的朋友包含了交叉路口并推入了一个小组。
  5. 这就是我的方式。但我随机选择了“c”,结果不准确。因为我的小学朋友列表最大,所以他们总是出现在3或4组结果中。你有什么主意吗 ?谢谢你:)对我糟糕的解释感到抱歉:)

1 个答案:

答案 0 :(得分:0)

图形聚类中有很多工作可能会有所帮助。你可以将每个人建模为一个顶点,在朋友之间有一个边缘(可能有一个权重取决于它们的“接近”程度,例如,他们交换消息的频率)。然后使用图形聚类对顶点集进行分区以获取组。 (它不必是一个分区,例如你可以寻找在它们之间具有高权重边的顶点子集。)

U Minn的hMetis系统实现了许多分区图的策略。