六度分离面试问题

sil*_*box 5 database algorithm math graph data-modeling

有人在最近的采访中被问到一个有趣的问题.

  • 你有100万用户
  • 每个用户有1千个朋友
  • 您的系统应该有效地回答Do I know him?每个用户的问题.如果用户通过6个级别的朋友连接,则用户"知道"另一个用户.

A朋友B,B是朋友C,C是朋友D,D是朋友E,E是朋友F.所以我们可以这么说,A知道F.

显然,您无法使用BFS或其他标准遍历技术有效地解决此问题.问题是 - 如何在数据库中存储此数据结构以及如何快速执行此搜索.

MBo*_*MBo 7

BFS有什么问题?

从第一个节点执行BFS的三个步骤,通过标志1标记可访问的用户.它需要10 ^ 9步.

从第二个节点执行BFS的三个步骤,用标志2标记可访问的用户.如果我们遇到标记1 - 宾果.