这是我试图使用图算法解决的问题。如果熟悉不同的图遍历算法,那么回答这个问题很容易。我想学的是如何降低这个问题的复杂性?
假设我们必须遍历某人的网络 - 朋友,朋友 朋友(FoF)和FoFoF(1年级,2年级,3年级,最高6度) 寻找特定的东西,比如说“居住在加利福尼亚的人”。该 当你有1000个朋友时,问题的复杂性会大大增加 你的1000个朋友各有1000个朋友,等等。
假设我们想要进行优化搜索,您就知道了 目的地节点(这里是居住在加利福尼亚州的人)。你将会怎样 减少问题的复杂性?
您提交的课程应该返回该人的学位 与你有联系。 ['目的节点'是你的学位第一名 (朋友),或第2(朋友的朋友)或3度(FoFoF)或学位 大于3度]。
答案 0 :(得分:1)
假设您的图表未加权,执行广度优先搜索将为您提供最短路径(实际上是您需要的度数)。如果目的地已知,您也可以使用Dijkstra算法找到到该特定节点的最短路径,但如果图表未加权,那么只做BFS会更有效,因为它的复杂性低于Dijkstra& #39; S。另外,如果我理解正确,你的输出只需要覆盖4个案例:1,2,3或更高的学位。如果是这样,您可以只前BFS前三个级别并存储结果。然后你可以通过检查通过BFS获得的数据中是否存在这样的人来定期回答问题。