标签: graph-theory depth-first-search breadth-first-search
我正在尝试实施社交网络关注图。
要求是这样的,为简单起见,我们可以假设图中每个用户u的轮廓由正整数值P [u]表示。我被要求提供约会服务。目标是为每个用户生成一个好的约会对象。如果合作伙伴可以通过以下链接访问,那么合作伙伴就是好的,其概况与您的概况完全相同(如果有的话)。
这是一个图遍历问题,我可以自己实现,但问题是我不确定在这种情况下使用DFS还是BFS更好?
答案 0 :(得分:1)
从复杂性的角度来看,两种算法都在O(V + E)中运行。从内存空间的角度来看,DFS优于BFS。因此,如果您关心内存,DFS会更适合您。抛开内存,您只需知道哪种算法最适合您。例如,您可能更喜欢与其他合作伙伴相比更接近用户的好伙伴。用户可能有很多好伙伴。因此,如果你想找到一个比较接近的好伙伴,BFS会为你做到这一点。否则,没有区别。查看下面的示例,DFS(1)可能会返回8或7作为1的良好合作伙伴。在运行BFS(1)时,您将始终获得7作为1的良好合作伙伴。