关于朋友网六度人脉功能实现的猜测
2013-09-11 22:15
204 查看
世界上任意两个人之间最多经过6跳就能建立联系,朋友网貌似实现了这种查找。一个最直接的想法就是找最短路径,但是不管是Dijkstra还是Floyd算法都是O(n^3)。况且六度人脉的功能在使用时感觉并不是精确的,因此在实际中应该用某种近似的算法来实现。知乎上有人发帖进行讨论(http://www.zhihu.com/question/20010259 ),感觉两个idea比较靠谱:1.
从两端各找三层,找公共点;2. 先聚类,在小圈子里面先算最短路径。
个人更倾向于第二个想法,因为qq上面还有个圈子的功能,基本就是聚类的实现吧。然后任意给出两个用户,如果属于同一个圈子,直接返回路径即可;如果属于不同的圈子,就可以找两个圈子的公共交集,从而找到相应路径。这个感觉直接用数据库就可以实现了。
前面跟陆总讨论的时候,感觉这块挺有意思,有必要记录下来。不过也都是一些猜测而已,欢迎拍砖。。。
从两端各找三层,找公共点;2. 先聚类,在小圈子里面先算最短路径。
个人更倾向于第二个想法,因为qq上面还有个圈子的功能,基本就是聚类的实现吧。然后任意给出两个用户,如果属于同一个圈子,直接返回路径即可;如果属于不同的圈子,就可以找两个圈子的公共交集,从而找到相应路径。这个感觉直接用数据库就可以实现了。
前面跟陆总讨论的时候,感觉这块挺有意思,有必要记录下来。不过也都是一些猜测而已,欢迎拍砖。。。
相关文章推荐
- shiro框架---关于用户登录和权限验证功能的实现步骤(八)
- Android 关于录音文件的编解码 实现米聊 微信一类的录音上传的功能
- 关于FMS做双向视音频传输服务以及实现电子白板功能的例子
- 关于在PLSQL中实现DEBUG调试功能的方法
- 关于网站做多语言切换功能的最简单实现思路
- 关于H5唤醒APP的功能实现(千辛万苦啊!)
- shiro框架---关于用户登录和权限验证功能的实现步骤(七)
- 关于使用DataGrid的ButtonColumn,动态添加DataGrid列,实现不定列n个文件的下载功能
- 关于lucene2.0的创建、检索和删除功能的完整实现
- 关于实现和完善志愿者管理系统的几个功能的问题
- 关于“多线程断点续传下载”功能的一个简单实现和讲解
- 微信js-sdk+JAVA实现“分享到朋友圈”和“发送给朋友”功能详解
- 关于tag标签功能的实现
- 关于UITableView截屏功能的实现
- 关于QQ一些功能的实现(转)
- 关于iOS中简单实现调用系统相机及相册功能
- 关于QQ一些功能的实现(二)
- QtQuick桌面应用开发指导 1)关于教程 2)原型和设计 3)实现UI和功能_A
- pes项目中关于表格合计功能的实现