07 搜索(BFS和DFS)图的遍历

news/2025/3/5 6:52:54/

引用链接:https://blog.csdn.net/weixin_43955293/article/details/126445861深度优先搜索(DFS)和广度优先搜索(BFS)_深度优先搜索和广度优先搜索对比-CSDN博客

1、广度优先遍历(BFS)

1.1概念

广度优先搜索:又叫层次遍历,从上往下对每一层依次访问,在每一层中,从左往右(也可以从右往左)访问结点,访问完一层就进入下一层,直到没有结点可以访问为止。

广度优先搜索(也称宽度优先搜索,缩写BFS即即Breadth First Search)是连通图的一种遍历算法。这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和广度优先搜索类似的思想。

所采用的策略可概况为越早被访问到的顶点,其邻居顶点越早被访问。于是,从根顶点s的BFS搜索,将首先访问顶点s;再依次访问s所有尚未访问到的邻居;再按后者被访问的先后次序,逐个访问它们的邻居。一般用队列queue数据结构来辅助实现BFS算法。若将bfs策略应用于树结构,其效果等同与层次遍历。

常用于搜索最优值问题。

1.2代码


                        

2、深度优先搜索遍历(DFS)

深度优先搜索:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。 

2.1 遍历过程:

  (1)从图中某个顶点v出发,访问v。

  (2)找出刚才第一个被顶点访问的邻接点。访问该顶点。以这个顶点为新的顶点,重复此步骤,直到访问过的顶点没有未被访问过的顶点为止。

  (3)返回到步骤(2)中的被顶点v访问的,且还没被访问的邻接点,找出该点的下一个未被访问的邻接点,访问该顶点。

  (4)重复(2) (3) 直到每个点都被访问过,遍历结束。

若将bfs策略应用于树结构,其效果等同与前中后序遍历。


http://www.ppmy.cn/news/1576756.html

相关文章

Cherno 游戏引擎笔记(91~111)

好久不见! 个人库的地址:(GitHub - JJJJJJJustin/Nut: The game_engine which learned from Cherno),可以看到我及时更新的结果。 -------------------------------Saving & Loading scene-----------------------…

嵌入式软件测试工具的“安全与效率悖论”破局之道

嵌入式软件测试工具的“安全与效率悖论”破局之道 ——从winAMS的技术底层看行业范式升级 一、行业困境:当“安全需求”撞上“交付速度” 2024年,全球嵌入式软件测试工具市场规模达52亿美元,但市场痛点并未因规模扩张而缓解‌: …

20250304笔记-阅读论文

文章目录 前言一、寻找论文1.1寻找有代码的论文方法一:浏览器扩展1.1.1使用流程 方法二:使用Papers with Code 1.2大量搜索代码 二、阅读论文所用软件 三、引用文献格式总结 前言 一、寻找论文 1.1寻找有代码的论文 方法一:浏览器扩展 浏览…

游戏引擎学习第120天

仓库:https://gitee.com/mrxiao_com/2d_game_3 上次回顾:周期计数代码 我们正在进行一个项目的代码优化工作,目标是提高性能。当前正在优化某个特定的代码片段,已经将其执行周期减少到48个周期。为了实现这一目标,我们设计了一个…

【大模型基础_毛玉仁】0.概述

更多内容:XiaoJ的知识星球 【大模型基础_毛玉仁】 系列文章参考 系列文章 【大模型基础_毛玉仁】0.概述 【大模型基础_毛玉仁】1.1 基于统计方法的语言模型 更新中。。。。。。 参考 书籍:大模型基础_完整版.pdf Github:https://github.co…

计算机毕设-基于springboot的拖恒ERP-物资管理系统的设计与实现(附源码+lw+ppt+开题报告)

博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

一个开源且免费的 .NET CMS 和应用程序框架

前言 今天大姚给大家分享一个开源且免费的 .NET CMS 和应用程序框架:Cofoundry。 项目介绍 Cofoundry是一个开源且免费的 .NET CMS 和应用程序框架,专注于代码优先的开发模式、无侵入的集成方式、可扩展且灵活的架构以及简单且用户友好的内容管理。 …

本地jar包添加到 maven

进入到 你的 maven bin文件夹下 执行cmd ,然后执行命令 mvn install:install-file -Dfilepath/to/your/artifact.jar -DgroupIdyour.group.id -DartifactIdyour-artifact-id -Dversion1.0 -Dpackagingjar 替换path/to/your/artifact.jar为你的JAR文件路径&#xf…