朋友圈的人脉关系的算法
2017-06-14 13:20
148 查看
大家一起讨论一下啊!最短路径?
1、一度人脉:双方直接是好友
2、二度人脉:双方有一个以上共同的好友,这时朋友网可以计算出你们有几个共同的好友并且呈现数字给你。你们的关系是: 你->朋友->陌生人
3、三度人脉:即你朋友的朋友的朋友就是这个陌生人。你们的关系是 你->朋友->朋友->陌生人
4、四度人脉:比三度增加一度,你们的关系是,你->朋友->朋友->朋友->陌生人
5、五度人脉:你->朋友->朋友->朋友->朋友->陌生人 ,像上面这张图片表示的就是一个五度人脉关系。
6、六度人脉:你->朋友->朋友->朋友->朋友->朋友->陌生人
根据六度人脉理论,世界上任意两个人之间的联系间隔不超过6个人。不过我在朋友网上见过两个人之间间隔7个人的。
就是这样简单的一张图,一个简单的功能,几秒钟内算出你与任意一个人之间的间隔联系。可是实现起来容易吗?不容易,一点也不容易。明旭今天就试着剖析一下朋友网人脉地图背后的实现算法。
首先分析一下需要运算的量,和用户能够接受的范围。
用户能够接受的的范围,10秒以内,超过这时间就太长了。
需要运算的量,
按平均一个人有250个好友来算。
计算是否一度人脉需要的运算量,用你的250个好友分别与这个人的250个好友逐一对比,这个需要对比的数量是 250*250=62500次,还得增加一个计数器,累计你们之间有几个共同好友。
计算是否二度人脉需要的运算量,就更大了,服务器要扫描你250个直接好友的每人250个好友面与这个人250个好友进行对比。对比一遍下面需要的
最小运算量是:250*250+1 =62501次,
最大运算量是:250*250*250=15625000次 //二度人脉比较运算最高已经达到千万次了。
三度人脉需要的运算量是:
最小运算量是:250*250*250+1=15,625,001次
最大运算量是:250*250*250*250=3,906,250,000次 //约39亿次
四度人脉需要的运算量是:
最小运算量是:250*250*250*250+1=3,906,250,001次
最大运算量是:250*250*250*250*250=976,562,500,000次 //约九千亿次了
五度人脉需要的运算量是:
最小运算量是:250*250*250*250*250+1=976,562,500,001次
最大运算量是:250*250*250*250*250*250=244,140,625,000,000次 //约240万亿次了
六度人脉需要的运算量是:
最小运算量是:250*250*250*250*250*250+1=244,140,625,000,001次
最大运算量是:250*250*250*250*250*250*250=61,035,156,250,000,000次 //约6亿亿次了
1,125,899,906,842,624
6亿亿次是个什么概念呢,就是说把这每个对比运算做为一个字节存储的话,需要54PB的硬盘来存储了,如果是配备1TB硬盘的台式机,需要5400台个人电脑来存储了。
现在有点概念了吧。
这么庞大的运算量,要在10秒种之内运算出来实在是一个难题,那么朋友网是如何在几秒钟之内运算出你与任意两个人之间的关系了,这里面到底要用到一些什么样的算法呢
https://q.cnblogs.com/q/36448/
1、一度人脉:双方直接是好友
2、二度人脉:双方有一个以上共同的好友,这时朋友网可以计算出你们有几个共同的好友并且呈现数字给你。你们的关系是: 你->朋友->陌生人
3、三度人脉:即你朋友的朋友的朋友就是这个陌生人。你们的关系是 你->朋友->朋友->陌生人
4、四度人脉:比三度增加一度,你们的关系是,你->朋友->朋友->朋友->陌生人
5、五度人脉:你->朋友->朋友->朋友->朋友->陌生人 ,像上面这张图片表示的就是一个五度人脉关系。
6、六度人脉:你->朋友->朋友->朋友->朋友->朋友->陌生人
根据六度人脉理论,世界上任意两个人之间的联系间隔不超过6个人。不过我在朋友网上见过两个人之间间隔7个人的。
就是这样简单的一张图,一个简单的功能,几秒钟内算出你与任意一个人之间的间隔联系。可是实现起来容易吗?不容易,一点也不容易。明旭今天就试着剖析一下朋友网人脉地图背后的实现算法。
首先分析一下需要运算的量,和用户能够接受的范围。
用户能够接受的的范围,10秒以内,超过这时间就太长了。
需要运算的量,
按平均一个人有250个好友来算。
计算是否一度人脉需要的运算量,用你的250个好友分别与这个人的250个好友逐一对比,这个需要对比的数量是 250*250=62500次,还得增加一个计数器,累计你们之间有几个共同好友。
计算是否二度人脉需要的运算量,就更大了,服务器要扫描你250个直接好友的每人250个好友面与这个人250个好友进行对比。对比一遍下面需要的
最小运算量是:250*250+1 =62501次,
最大运算量是:250*250*250=15625000次 //二度人脉比较运算最高已经达到千万次了。
三度人脉需要的运算量是:
最小运算量是:250*250*250+1=15,625,001次
最大运算量是:250*250*250*250=3,906,250,000次 //约39亿次
四度人脉需要的运算量是:
最小运算量是:250*250*250*250+1=3,906,250,001次
最大运算量是:250*250*250*250*250=976,562,500,000次 //约九千亿次了
五度人脉需要的运算量是:
最小运算量是:250*250*250*250*250+1=976,562,500,001次
最大运算量是:250*250*250*250*250*250=244,140,625,000,000次 //约240万亿次了
六度人脉需要的运算量是:
最小运算量是:250*250*250*250*250*250+1=244,140,625,000,001次
最大运算量是:250*250*250*250*250*250*250=61,035,156,250,000,000次 //约6亿亿次了
1,125,899,906,842,624
6亿亿次是个什么概念呢,就是说把这每个对比运算做为一个字节存储的话,需要54PB的硬盘来存储了,如果是配备1TB硬盘的台式机,需要5400台个人电脑来存储了。
现在有点概念了吧。
这么庞大的运算量,要在10秒种之内运算出来实在是一个难题,那么朋友网是如何在几秒钟之内运算出你与任意两个人之间的关系了,这里面到底要用到一些什么样的算法呢
https://q.cnblogs.com/q/36448/
相关文章推荐
- 大家一起讨论一下朋友网的人脉关系算法是怎么实现的
- 每天早晨的问候能够彻底的改善你的人脉关系
- 什么是真的人脉关系?
- 几种判断点与多边形关系的算法介绍
- 关系模式候选键的算法
- 学会社交(人脉关系)和找下一个工作
- STL中计算排列组合关系的算法
- 打造人脉关系网,成就事业
- 算法四类问题关系图
- 学会社交(人脉关系)和找下一个工作
- 算法和数据结构的关系
- BOM遍历算法 网状关系模型
- 论中英文写作思维与算法的关系
- 编译原理(七) 算符优先分析法(构造算符优先关系表算法及C++实现)
- 程序设计实习MOOC / 程序设计与算法(一)第三周测验(2017冬季)3:点和正方形的关系
- 非阻塞算法思想在关系数据库应用程序开发中的使用
- 计算几何算法概览——位置关系
- 谱减算法的缺点和过减因子、谱下限的关系
- 数据结构与算法之间的关系