广度优先搜索算法和深度优先算法的对比


一. 关于图的小知识


  1. 图的类型

    图的类型一般分为有向图、连通图和加权图

  2. 图的算法包括:

  • 图的搜索算法:图的搜索指的就是从图的某一节点开始,通过边到达不同的节点,最终找到目标节点的过程。根据搜索的顺序不同,图的搜索算法可分为“广度优先搜索”和“深度优先搜索”两种。

  • 图的最短路径问题:最短路径问题就是要在两个节点的所有路径中,找到一条所经过的边的权重总和最小的路径。相关算法有“贝尔曼-福特算法”,“狄克斯特拉算法”和“A* 算法”三种。


二. 广度优先搜索和深度优先搜索的对比


广度优先搜索算法和深度优先算法的不同在于选取候补节点作为下一个节点的基准不同,广度优先算法以队列的形式存放候补节点,而深度优先以栈的形式存放候补节点。简单来说广度优先搜索选择的是最早成为候补的节点,因为节点离起点越近就越早成为候补,所以会从离起点近的地方开始按顺序搜索;而深度优先搜索选择的则是最新成为候补的节点,所以会一路往下,沿着新发现的路径不断深入搜索。

我们将起点设置为A,终点设置为G,以下红色代表正在遍历的当前节点,而粉色表示在栈或队列中的候补节点,黄色则表示已经遍历过的节点,最后蓝色表示未遍历且不在队列或栈的节点>我们将起点设置为A,终点设置为G,以下红色代表正在遍历的当前节点,而粉色表示在栈或队列中的候补节点,黄色则表示已经遍历过的节点,最后蓝色表示未遍历且不在队列或栈的节点

  • 广度优先算法(放入的顺序为BCD)

image

  • 深度优先算法(放入的顺序为DCB)

image


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM