六度分离面试问题

时间:2017-09-02 15:20:12

标签: database algorithm math graph data-modeling

最近在接受采访时,有人问了一个有趣的问题。

  • 您有100万用户
  • 每位用户都有1千位朋友
  • 您的系统应该针对每个用户有效地回答Do I know him?个问题。用户“知道”另一个,如果他们通过6级朋友连接。

E.g。 AB的朋友,BC的朋友,CD的朋友,D是E的朋友1}},EF的朋友。我们可以说,A知道F

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

2 个答案:

答案 0 :(得分:7)

BFS有什么问题?

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

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

答案 1 :(得分:0)

如何将数据存储为100万x 1百万个矩阵A,其中A [i] [j]是从用户i到用户j的最小步数。然后你几乎可以立即查询它。然而,更新成本更高。