朋友圈的人脉关系的算法

简介: 大家一起讨论一下啊!最短路径?   1、一度人脉:双方直接是好友   2、二度人脉:双方有一个以上共同的好友,这时朋友网可以计算出你们有几个共同的好友并且呈现数字给你。你们的关系是: 你->朋友->陌生人   3、三度人脉:即你朋友的朋友的朋友就是这个陌生人。

 

大家一起讨论一下啊!最短路径?

 

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/

相关文章
|
4月前
|
算法 JavaScript 前端开发
切西瓜法实现微信抢红包功能
该文章介绍了使用“切西瓜法”和“栅栏法”两种算法来模拟微信抢红包的随机分配机制,并通过具体的JavaScript代码实现了红包金额的公平随机分配过程。
切西瓜法实现微信抢红包功能
|
7月前
|
安全 UED 黑灰产治理
微信留言自动回复(Python实现)
本项目旨在使用Python与Windows GUI自动化工具来自动化微信的操作,作用为读取未读消息、根据关键词回复消息
267 0
|
IDE 开发工具 Python
10分钟教你用Python实现微信自动回复
10分钟教你用Python实现微信自动回复
3085 0
10分钟教你用Python实现微信自动回复
|
算法 前端开发 JavaScript
【青训营】- 切西瓜法实现微信抢红包功能
那在下面的文章中呢,我们将来实现一个微信红包相关的分红包功能。一起来了解叭~
【青训营】- 切西瓜法实现微信抢红包功能
|
算法
漫画:如何实现抢红包算法?
发出一个固定金额的红包,由若干个人来抢,需要满足哪些规则?所有人抢到金额之和等于红包金额,不能超过,也不能少于。每个人至少抢到一分钱。要保证所有人抢到金额的几率相等。
201 0
漫画:如何实现抢红包算法?
|
Web App开发 移动开发 前端开发
淘宝的互动项目,为什么总会刷爆你的好友圈?
最近一直在思考一个问题:“在互动团队这么多年了,什么样的互动项目是有温度的呢?又应该如何构建有温度的互动项目呢”?想了很久,接下来以我自己角度的理解来尝试着回答,如果回答不对之处,还请路过的大神拍砖指正。
1150 0
淘宝的互动项目,为什么总会刷爆你的好友圈?
更新了朋友圈&微博动态,好友何时会点赞评论?
其数据分布有助于对社会动态的基本规律进一步进行理解,并可针对性的为用户设计推广方案。实验证明,本模型可以成功复现出社交交互数据集中用户的交互行为模式。相比当前方法,模型在统计指标上获得了很大的提升。此外,模型在多个数据集上均展现出了很高的准确率,表明其具有很强的泛化能力。
1100 0
|
存储 数据安全/隐私保护 iOS开发