算法-请教好友链的算法

发布于 2016-11-13 14:45:29 字数 194 浏览 1307 评论 3

大家都知道六度空间理论:通过六个人你就能够认识任何一个陌生人

现在有这么一个SNS网站,用户数量已经足够大,每个用户跟部分认识的人之间已经建立了好友关系,请问怎样计算出两两陌生人之间的好友链,比如A的好友里有B,B的好友里有C,C的好友里有D,则A跟D的好友链是A->B->C->D,

请高效的算法,并且使得到的好友链尽量短

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清晨说ぺ晚安 2017-10-22 04:06:17

每个人作为一个点存在,点与点之间进行连接,其实就是一个图,只是这个图是否是有向,是否是有权需要根据需要分析一下。
1: 如果两个人存在好友关系,且A好友里有B,B好友里有A,那就是无向的,否则就是有向的。
2: 熟识程度,A与B的关系是家庭关系,A与C是同学关系,那么可以认为A与B之间的熟悉程度高于A与C之间的熟悉程度。

简单点处理,不考虑熟识程度,关系只是归结于联系(好友),没有强弱之分,且认为这种联系是双向的(也就是无向的),那这个问题就归结为一个简单的无向无权图的最短路径问题,广度优先类的算法应该比较合适,例如经典的Dijkstra算法。

瑾兮 2017-09-13 22:07:22

有向图的最短路径方案。有现成的算法!

清晨说ぺ晚安 2016-11-22 10:33:57

我比较好奇如何设计这种相关的存储结构,采用什么数据库能够满足如此大数据量的需求,还能高效的存取、计算出好友链,求解答,谢谢!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文