优化搜索。如何降低复杂性?

时间:2015-06-08 17:06:54

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

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

  

假设我们必须遍历某人的网络 - 朋友,朋友   朋友(FoF)和FoFoF(1年级,2年级,3年级,最高6度)   寻找特定的东西,比如说“居住在加利福尼亚的人”。该   当你有1000个朋友时,问题的复杂性会大大增加   你的1000个朋友各有1000个朋友,等等。

     

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

     

您提交的课程应该返回该人的学位   与你有联系。 ['目的节点'是你的学位第一名   (朋友),或第2(朋友的朋友)或3度(FoFoF)或学位   大于3度]。

1 个答案:

答案 0 :(得分:1)

假设您的图表未加权,执行广度优先搜索将为您提供最短路径(实际上是您需要的度数)。如果目的地已知,您也可以使用Dijkstra算法找到到该特定节点的最短路径,但如果图表未加权,那么只做BFS会更有效,因为它的复杂性低于Dijkstra& #39; S。另外,如果我理解正确,你的输出只需要覆盖4个案例:1,2,3或更高的学位。如果是这样,您可以只前BFS前三个级别并存储结果。然后你可以通过检查通过BFS获得的数据中是否存在这样的人来定期回答问题。