我正在构建一个应用程序,根据他/她与每个朋友的共同朋友,为Facebook用户推荐好友列表。我的想法是这样的:
http://i219.photobucket.com/albums/cc213/DoSvn/example03.png
我可以让A的所有共同朋友和他/她的每个朋友(B1,B2…)。是地下一层和地下二层的交叉口…(c1,c2……)我想把朋友分成几个小组,比如:
一组中的b1,b2,b3;一组中的b1,b4;一组中的b5,b6;一组中的b7,b8
也许只有b1,b2,b3这一组被选择,因为它更大,b1也在另一组中我试过一个主意:
创建许多组(我尝试了200个),每个组包含一些共同的朋友列表(它是“c”,我尝试了5个)。
与一个组一起,找出交叉点并将其推到另一个列表中。
在步骤2之后,我有一个包含交集的列表。我根据每个交叉口的大小来安排,得到最大的交叉口(我试了3个和5个)。
选择每个交集后,我会找出有共同朋友的朋友包含交集并推到一个组中。
我就是这么做的。但我随机选择了“c”,所以结果并不准确因为我的初级朋友名单是最大的,所以他们总是出现在3或4组的结果。你知道吗?谢谢:)很抱歉我的解释很差:)

最佳答案

在图聚类方面有很多工作可能是有帮助的。你可以将每个人建模为一个顶点,在朋友之间有一个边界(可能根据他们的“亲密程度”来确定权重,例如他们交换消息的频率)然后用图聚类的方法对顶点集进行划分,得到群。(Ut不必是一个分区,例如,您可以查找在它们之间具有高权重边的顶点子集。)
U-Minn的hMetis系统实现了许多划分图的策略。

关于algorithm - 如何根据共同的 friend 为Facebook用户推荐 friend 列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4020610/

10-12 13:54