码迷,mamicode.com
首页 > 其他好文 > 详细

总结——DFS && BFS

时间:2018-04-11 15:39:36      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:判断   bsp   class   广度优先   深度优先搜索   深度优先   turn   span   tin   

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

 

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

标签:判断   bsp   class   广度优先   深度优先搜索   深度优先   turn   span   tin   

原文地址:https://www.cnblogs.com/travelller/p/8794890.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!