【问题标题】:Optimized search.How to reduce the complexity ?优化搜索。如何降低复杂度?
【发布时间】:2015-06-08 17:06:54
【问题描述】:

这是我尝试使用图形算法解决的一个问题。如果熟悉不同的图遍历算法,这个问题的答案很容易。我想了解的是如何降低这个问题的复杂性?

假设我们必须遍历某人的网络 - Friends, Friends of Friends (FoF) 和 FoFoF (1st, 2nd, 3rd Degree.. up to 6th degree) to 搜索特定的事物,例如“居住在加利福尼亚的人”。这 当你有 1000 个朋友时,问题的复杂性会大大增加 而你的 1000 个朋友各有 1000 个朋友,以此类推。

假设我们要进行优化搜索,您知道 目的地节点(这里是居住在加利福尼亚的人)。你将会怎样 降低问题的复杂性?

您提交的程序应返回该人的学位 连接到你。 [其中“目标节点”是您的第一学位 (朋友),或第二(朋友的朋友)或第三度(FoFoF)或学位 大于 3 度]。

【问题讨论】:

    标签: facebook algorithm facebook-graph-api graph graph-traversal


    【解决方案1】:

    假设您的图表未加权,执行广度优先搜索将为您提供最短路径(实际上是您需要的度数)。如果目的地是已知的,您还可以使用 Dijkstra 的算法来找到到该特定节点的最短路径,尽管如果图未加权,则仅执行 BFS 会更有效,因为它的复杂性低于 Dijkstra 的。此外,如果我理解正确,您的输出必须仅涵盖 4 种情况:度数 1、2、3 或更高。如果是这样,您可以只对前三个级别进行 BFS 并存储结果。然后你可以通过在通过 BFS 获得的数据中检查该人的存在来在恒定时间内回答问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-13
      • 2012-07-28
      • 2020-10-03
      • 1970-01-01
      相关资源
      最近更新 更多