我读过BFS算法比DFS更适合并行实现。我很难理解为什么这应该是真的直觉。谁能解释一下?
由于
答案 0 :(得分:2)
BFS是传播边界的程序。 “传播”意味着将所有未访问的相邻顶点推入队列,并且可以单独处理 。
在DFS中,沿着诸如A-> B-> C的方向逐个访问顶点。访问B必须在访问C之前进行。这是一个无法轻松并行化的顺序过程。但事实是BFS和DFS都难以并行化,因为所有处理节点都必须知道全局信息。访问全局变量总是需要节点之间的同步和通信。
答案 1 :(得分:0)
一般来说,有一些关于 DFS 和 BFS 的良好信息:
特别是animation显示 BFS 如何使用更多并行概念。我认为 BFS 可以并行实现,但 DFS 没有并行解决方案。 DFS 是一种线性算法,可以调用每个孩子一次。