宽度优先搜索算法顺序:1-2-3-4-5-6-7

深度优先搜索算法顺序:1-2-4-5-3-6-7

宽度优先搜索算法(又称广度优先搜索)BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。

structNode
{
intx;
inty;
intstep;
Node(intx1,inty1,intstep1):x(x1),y(y1),step(step1){}
};
intBFS()
{
Nodenode(0,0,0);
queue<Node>q;
while(!q.empty())q.pop();
q.push(node);
while(!q.empty())
{
node=q.front();
q.pop();
if(node.x==n-1&&node.y==n-1)
{
returnnode.step;
}
visit[node.x][node.y]=1;
for(inti=0;i<4;i++)
{
intx=node.x+stepArr[i][0];
inty=node.y+stepArr[i][1];
if(x>=0&&y>=0&&x<n&&y<n&&visit[x][y]==0&&mazeArr[x][y]==0)
{
visit[x][y]=1;
Nodenext(x,y,node.step+1);
q.push(next);
}
}
}
return-1;
}

与深度优先搜索的对比

深度优先搜索用栈(stack)来实现,整个过程可以想象成一个倒立的树形:
1、把根节点压入栈中。
2、每次从栈中弹出一个元素,搜索所有在它下一级的元素,把这些元素压入栈中。并把这个元素记为它下一级元素的前驱。
3、找到所要找的元素时结束程序。
4、如果遍历整个树还没有找到,结束程序。
广度优先搜索使用队列(queue)来实现,整个过程也可以看做一个倒立的树形:
1、把根节点放到队列的末尾。
2、每次从队列的头部取出一个元素,查看这个元素所有的下一级元素,把它们放到队列的末尾。并把这个元素记为它下一级元素的前驱。
3、找到所要找的元素时结束程序。
4、如果遍历整个树还没有找到,结束程序。
深度优先搜索算法(Depth-First-Search),是沿着树的深度遍历树的 节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于 盲目搜索。 利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。

宽度优先搜索与深度优先搜索相关推荐

  1. 算法导论--广度优先搜索和深度优先搜索

    广度优先搜索 在给定图G=(V,E)和一个特定的源顶点s的情况下,广度优先搜索系统地探索G中的边,以期"发现"可从s 到达的所有顶点,并计算s 到所有这些可达顶点之间的距离(即最少 ...

  2. 基于A*搜索和深度优先搜索解迷宫问题

    摘 要 迷宫问题是指能够从起始点寻找一条通往目标点的路径,迷宫的传统搜索是采用深度优先和宽度优先搜索,虽然也能够解决迷宫的求解问题,但是这些方法效率比较低.我们已经知道深度优先和广度优先搜索归于为盲目 ...

  3. 广度优先搜索与深度优先搜索

    广度优先搜索(宽度优先搜索,BFS)和深度优先搜索(DFS)算法的应用非常广泛,本篇文章主要介绍BFS与DFS的原理.实现和应用. 深度优先搜索 图的深度优先搜索(Depth First Search ...

  4. AI(人工智能:一种现代的方法)学习之:无信息搜索(uninformed search)算法——广度优先搜索、深度优先搜索、Uniform-cost search

    文章目录 参考 搜索算法 深度优先搜索 depth-first search 性能分析 完整性 complete 最优性 optimal 时间复杂度 空间复杂度 广度优先搜索 breadth-firs ...

  5. 广度优先搜索_深度优先搜索和广度优先搜索[09]

    搜索与遍历 绝大多数搜索的处理叫暴力搜索,或者说比较简单朴素的搜索.如果数据结构本身没有任何特点,很普通的树或者图,我们要做的一件事就是把所有节点都遍历一次. 每个节点都要访问一次 每个节点仅仅要访问 ...

  6. 八数码深度优先搜索_深度优先搜索和广度优先搜索

    深度优先搜索和广度优先搜索 关于搜索&遍历 对于搜索来说,我们绝大多数情况下处理的都是叫 "所谓的暴力搜索" ,或者是说比较简单朴素的搜索,也就是说你在搜索的时候没有任何所 ...

  7. 深度优先搜索和深度优先搜索的区别

    一)深度优先搜索的特点是: (1)无论问题的内容和性质以及求解要求如何不同,它们的程序结构都是相同的,即都是深度优先算法(一)和深度优先算法(二)中描述的算法结构,不相同的仅仅是存储结点数据结构和产生 ...

  8. 根据邻接表求深度优先搜索和广度优先搜索_深度优先搜索/广度优先搜索与java的实现...

    度:某个顶点的度就是依附于该顶点的边的个数 子图:一幅图中所有边(包含依附边的顶点)的子集 路径:是由边顺序连接的一系列定点组成 环:至少含有一条边且终点和起点相同的路径 连通图:如果图中任一个到另一 ...

  9. (四)万能的搜索 —— 1. 深度优先搜索

    1. 深度优先搜索 问题:输入一个数n,输出1~n的全排列. 举个例子,假如有编号为1.2.3的3张扑克牌和编号为1.2.3的3个盒子. 现在需要将这3张扑克牌分别放到3个盒子里面,并且每个盒子有且只 ...

最新文章

  1. WhyGL:一套学习OpenGL的框架,及翻写Nehe的OpenGL教程
  2. 利用中断在 ESP32 MicroPython 程序中读取AM2302
  3. 批量关闭电脑有害端口方法
  4. 遗传算法求最短路径(旅行商问题)python实现
  5. 网络安全-配置dns服务器
  6. 二面蚂蚁金服(交叉面),已拿offer,Java岗定级阿里P6
  7. db2存储结构换Oracle,DB2中实现Oracle的功能
  8. 378. 有序矩阵中第K小的元素
  9. chinese-ocr自然场景下不定长文字识别(ctpn + densenet)
  10. hbase使用restful接口进行数据操作
  11. 消息队列中点对点与发布订阅区别(good)
  12. ps里面的css,PS中如何添加图层样式
  13. 计算机名字好听的,好听的昵称大全
  14. js数字金额转大写,javaScript数字金额转大写。
  15. 下载歌曲的时候嫌麻烦?打造专属你的音乐下载器
  16. 必做: 1041、1024、1077、2218、1183(较难)
  17. RadioButton 只读
  18. 趣图:没想到 CSS 深灰色是这样的
  19. 96-centos安装postgresql
  20. ros 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。

热门文章

  1. 一键打开多个软件 开发工具
  2. C# 源码 ,使用<switch语句>实现学生成绩评测.
  3. Mac 安装包破损 或 软件不受信任无法打开
  4. Java成员方法与静态方法的详解
  5. 【软考】高级系统架构设计师学习经验分享
  6. 现60岁,一次性缴纳60万养老金,一个月领取4000元,你愿意吗
  7. 【MySQL】黑马教程MySQL数据库 MySQL基础(一)
  8. 【MySQL】联结表
  9. 关于淘宝API的详细说明(淘宝开放平台API揭秘)
  10. JavaScript基础 ——【了解JavaScript】