首页 > 其他 > 详细

总结——DFS && BFS

时间:2018-04-11 14:29:20      阅读:154      评论:0      收藏:0      [点我收藏+]

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

 

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!