总结——DFS && BFS

Posted travelller

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了总结——DFS && BFS相关的知识,希望对你有一定的参考价值。

深度优先搜索广度优先搜索

 

1. 思路

  深度优先搜索伪代码:

void dfs(状态A){
    if  (A不合法)  return;
    if  (A为目标状态)  输出;
    if  (A不为目标状态)  dfs(A+x);
}

 

  广度优先搜索伪代码:

Q.push(head)
while (!Q.empty()){
    temp=Q.front();
    Q.pop;
    if  (temp为目标状态)  输出;
    if  (temp不合法)  continue;
    if  (temp合法)  Q.push(x);//x表示temp在搜索树中的所有子节点  
}

 

2. 适用范围——如何判断用深搜还是广搜?

  DFS:可以不重不漏枚举所有可达目标状态的路径。

  BFS:效率高,适用于找最快到达目标状态的路径。占用空间大。

  ① “最快”、“最短”、“最近”——广搜

  ② 没有深度限制,深搜可能永远搜不到头——广搜

 

以上是关于总结——DFS && BFS的主要内容,如果未能解决你的问题,请参考以下文章

BFS&DFS遍历

BFS&DFS遍历

DFS & BFS

图的两种遍历-DFS&BFS

DFS & BFS

BFS & DFS