2010-10-26 102 views
1

我正在构建一个应用程序,基于他/她的每个朋友的共同朋友建议facebook用户的朋友列表。我的想法看起来像这样:如何根据共同朋友建议Facebook用户的好友列表?

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

我可以得到的所有共同的朋友,每个他/她的朋友(B1,B2 ......)。它是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. 随着每个选定的路口,我找出有共同朋友的朋友包含路口并推入一组。

就是这样。但我随机选择了“c”,因此结果并不准确。因为我的小学朋友名单最大,所以他们总是出现在3或4组结果中。你有什么主意吗 ?谢谢:)对不起,我的可怜的解释:)

+0

这是一个有趣的问题。我读到了他们如何在facebook中创建freind列表作为一项功能,但人们都懒得创建它们。 – 2010-10-27 16:57:00

回答

0

图聚类有很多工作,可能会有所帮助。您可以将每个人建模为一个顶点,并在朋友之间建立边界(可能会减轻他们“接近”的体重,例如他们交换消息的频率)。然后使用图聚类划分该组顶点以获得组。 (Ut不一定是一个分区,例如,您可以查找它们之间具有高权重边的顶点的子集。)

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