最近学习到了这两种经典的算法,谈一下自己的理解

  • 深度优先搜索算法(Depth-First-Search,DFS)

这个算法会尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。

  • 广度优先搜索算法(Breadth-First Search,BFS)

简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。

  • 通过一个例题就很好理解了:

    ①深度优先搜索:
    假设按照从左向右的顺序,那么V1->V2->V4,节点V4的左边没有节点,向右探索,->V8,到节点V8后没法继续向下探索,因此按照探索顺序回溯,回溯到V2,发现右边有节点,->V5,节点V5没法继续探索,再按照探索顺序回溯,回溯到V1,向右到节点V3,任然遵循从左向右的原则:->V3-V6->V7。
    所以结果为:V1->V2->V4->V8->V5->V3-V6->V7
    ②广度优先搜索:
    假设按照从左向右的顺序,那么第一层V1,第二层V2、V3,第三层V4、V5、V6、V7,第四层V8.
    所以结果为:V1->V2->V3->V4->V5->V6-V7->V8

可以看到两种方法各有优缺点,这里只是浅谈一下自己的理解,还没有学数据结构,希望多多指正。

深度优先搜索算法(Depth-First-Search,DFS)与广度优先搜索算法(Breadth-First Search,BFS)理解相关推荐

  1. 深度优先搜索(Depth First Search)、广度优先搜索(Breadth First Search)

    DFS: /* 邻接表存储的图 - DFS */void Visit( Vertex V ) {printf("正在访问顶点%d\n", V); }/* Visited[]为全局变 ...

  2. 数据结构与算法(python):广度优先搜索(Breadth First Search,BFS)和深度优先算法(Depth First Search,DFS)

    参考自 MOOC数据结构与算法Python版 目录 一.广度优先搜索 1.1 BFS算法过程 1.2 广度优先搜索算法分析 二.深度优先搜索 2.1 骑士周游 2.1.1 问题定义 2.1.2 构建骑 ...

  3. 深度优先遍历(Depth First Search, 简称 DFS)

    正文开始: 深度优先遍历(Depth First Search, 简称 DFS) 与广度优先遍历(Breath First Search)是图论中两种非常重要的算法,生产上广泛用于拓扑排序,寻路(走迷 ...

  4. Python实现 宽度/广度优先搜索算法, 深度优先搜索算法

    Python实现 宽度/广度优先搜索算法, 深度优先搜索算法 1. 二叉树图 2. 宽度/广度优先搜索算法(Breadth First Search,BSF) 3. 深度优先搜索算法 4. 宽度/广度 ...

  5. DFS(Depth First Search,深度优先搜索)与BFS(Breadth First Search,广度优先搜索)总结与思考

    目录 Depth First Search(dfs) 代码(递归) 代码(非递归) Breadth First Search(bfs) 代码 比较 数据结构 时间复杂度 使用 例题:岛的个数 dfs实 ...

  6. DFS深度优先搜索算法/BFS广度优先搜索算法(c/c++)

    深度优先搜索算法(DFS) 深度优先搜索算法思路:(有点贪心算法的意思) 1,从某个给定结点a出发,访问它 2,查找关于a的邻接点,查找到a的第一个邻接点b之后,对b结点进行DFS搜索,也就是对b结点 ...

  7. 树的前序、中序、后序遍历及深度优先算法DFS、广度优先算法BFS及python实现

    刷Leetcode时遇到一种经典数据结构--树,树是典型递归思想来的,学习树有助于学习递归思想以及栈.队列(后续细说),本文对树的结构.遍历算法以及Python实现做总结,以供复习拓展 树是连通的无环 ...

  8. 三十二、图的创建深度优先遍历(DFS)广度优先遍历(BFS)

    一.图的基本介绍 为什么要有图 前面我们学了线性表和树 线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点 当我们需要表示多对多的关系时, 这里我们就用到了图. 图的举例 ...

  9. 【Python算法】遍历(Traversal)、深度优先(DFS)、广度优先(BFS)

    图结构: 非常强大的结构化思维(或数学)模型.如果您能用图的处理方式来规范化某个问题,即使这个问题本身看上去并不像个图问题,也能使您离解决问题更进一步. 在众多图算法中,我们常会用到一种非常实用的思维 ...

最新文章

  1. 大数据时代涉军网络舆情引导的“5个结合”
  2. Python 一次for遍历多个列表及遍历时获取index
  3. JavaScript对象、JSON对象、JSON字符串的区别
  4. q7goodies事例_Java 8 Friday Goodies:轻松派本地缓存
  5. java获取10位随机数_Java基础:JAVA中BitSet使用详解
  6. 前端—每天5道面试题(九)
  7. android 画圆角背景颜色,android圆角矩形有背景颜色
  8. STM32学习笔记(十) CAN通讯测试(环回模式)
  9. CF 235C. Cyclical Quest [后缀自动机]
  10. python机器学习之决策树详解
  11. 关于微信旧版本扫码登陆,旧版的登陆限制的一些经验
  12. Django 面试题
  13. # Maven错误Error executing Maven
  14. 如何修改host文件
  15. matlab人口增长线性回归拟合_Matlab线性回归(拟合)
  16. java CreateProcess error=740 请求的操作需要提升的问题
  17. 统计csv表格中某一元素的个数(count函数)
  18. Oracle中的dual表
  19. java怎么绘制魔方外观,AI简单绘制立体魔方教程
  20. 集成学习实战之 -- RandomForest

热门文章

  1. getenv putenv setenv和unsetenv详解
  2. Google 手机地图-中国版~
  3. 留良乡投资理财要合理配置资产
  4. 录用率48%到68%! I3D/ICDAR/CogSci/ICIP2023即将截稿
  5. win10安装redis及redis客户端使用方法
  6. 论文综述:问答系统综述
  7. DigiPCBA设计工具初体验!!!
  8. Idea 导包自动变成星号 Idea 导包自动变成*号的问题 java.io.* Idea 自动导包变成星号
  9. php时间戳与日期格式比大小,比较两个时间戳的大小
  10. 三分钟带你了解物联网的发展史