关于朋友网六度人脉功能实现的猜测

 世界上任意两个人之间最多经过6跳就能建立联系,朋友网貌似实现了这种查找。一个最直接的想法就是找最短路径,但是不管是Dijkstra还是Floyd算法都是O(n^3)。况且六度人脉的功能在使用时感觉并不是精确的,因此在实际中应该用某种近似的算法来实现。知乎上有人发帖进行讨论( http://www.zhihu.com/question/20010259  ),感觉两个idea比较靠谱: 1. 从两端各找三层,找公共点; 2. 先聚类,在小圈子里面先算最短路径。
个人更倾向于第二个想法,因为qq上面还有个圈子的功能,基本就是聚类的实现吧。然后任意给出两个用户,如果属于同一个圈子,直接返回路径即可;如果属于不同的圈子,就可以找两个圈子的公共交集,从而找到相应路径。这个感觉直接用数据库就可以实现了。
前面跟陆总讨论的时候,感觉这块挺有意思,有必要记录下来。不过也都是一些猜测而已,欢迎拍砖。。。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值