- 论坛徽章:
- 0
|
本帖最后由 lingyv119 于 2013-03-09 22:22 编辑
现有一个社交网站,其好友推荐策略为:
用户A和用户B不是好友,当二人的共同好友数量超过好友推荐阈值m(可配置)时,就向A和B分别推荐为彼此好友。
任务为:
不使用STL和Mapreduce,
对设定的m值,给定一组用户及各自好友列表,对这一组用户,反复自动应用上述好友推荐策略后(假设每次推荐都被采纳),求指定用户的最终好友列表。
要求算法复杂度不高于O(n^2),用户总数规格不受限;
注:好友关系是双向的,即:如果用户A是用户B的好友,那么用户B一定也是用户A的好友。
简单举例:m =0, A<->B, A<->C,由于B,C有>m个共同好友A,所以他们自动被推荐为彼此好友:B<->C;
m>0的情况不再举例;
----------------------------------------------------------------------------------------------------------------------------
一般做法都是:使用二维数组保存互相之间的关系,每次添加关系时遍历新加的这两个用户的所有好友,判断他们是否满足好友关系,
但这么搞有几次轮询或递归,复杂度是大于O(n^2) 的;
我试过用户数大于2K时,m=0的情况下,执行时间需要好几分钟。 |
|