首页 新闻 赞助 找找看

【讨论】讨论一下FB,QQ,开心网,人人网查找可能的朋友的算法!

0
[待解决问题]

大家应该都有这样的经验,QQ中添加完一个新的好友后,或者开心网等添加完一个新的朋友后,都会有一个页面显示出来,告诉用户,A, B, C, etc. 可能也是你认识的人,也许是你的朋友。

想讨论一下,这个功能是如何实现的。

第一直观的想法,就是BFS。

但是,如果A有200个好友,level 1时就已经有200人,如果平均一个用户有200个好友,这样展开的话,即使只有3,4层,那也是很庞大的数字。

可是我看QQ或者开心网之类的,每次添加完好友后,响应速度还是蛮快的。而且,推荐的那一些可能认识的人中间,还是有一些的确是认识的朋友。就是说,命中率还是蛮高的。

 

有没有比较好的算法么?

百分百好牛的主页 百分百好牛 | 菜鸟二级 | 园豆:205
提问于:2011-11-30 10:51
< >
分享
所有回答(2)
0

如果A和B都是你的朋友,C又是A和B的朋友,那么C就可能是你的朋友

Greatest | 园豆:678 (小虾三级) | 2011-11-30 11:59
0

他基本上不会去立即做一个宽优先的搜索,正如你说的,宽优先用的时间太长了。曾经在做一个项目是做过一个类似的功能,反应速度基本上可以,当然也可能是数据少的原因,当时我们做的思路是这样的。先把这个过程分两步,第一,找出疑似人列表;二,筛选疑似人员。

假设A(B,C),E(B,C,F,R),B(A,C,F),C(B,A)

根据关系如果A加E的话,提示的就是F为可能认识的人。当时我们做的时候,是用E-A,得到(F,R);在A的好友B(A,C,F),C(B,A)中去查询(F)(R),最后得到F。

叶木木 | 园豆:252 (菜鸟二级) | 2011-11-30 16:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册