news 2026/6/9 23:53:17

代码随想录 深度优先搜索理论基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码随想录 深度优先搜索理论基础

一、dfs与bfs的区别:

1.大致区别:

(1)dfs:紧着一个方向去搜,直到搜不下去再换方向(换方向的过程涉及到了回溯)。

(2)bfs:先把本节点所连接的所有节点遍历一遍,走到下一个节点的时候,再把连接节点的所有节点遍历一遍,搜索方向更像的是广度四面八方的搜索过程。

二、dfs的搜索过程:

举例,如下图所示。

1.该图是一个无向图,要搜索从节点1到节点6的所有路径。

2.dfs搜索的第一条路径如下所示:

3.此时找到了节点6,该回头再去搜索其他方向了:

4.又到了节点6,再回头去搜索其他方向:

5.又找到了一条从节点1到节点6的路径,再回头:发现路径7、8和路径7、9都是死路,都走到了已经遍历过的节点。

6.那么节点2所连接的路径和节点3所连接的路径都已经走过了,撤销路径只能向上回退,去撤销当初节点4的选择,也就是撤销路径5改为路径10。

三、代码框架:由于dfs搜索紧着一个方向,且需要回溯,因此使用递归的方式实现是最方便的,代码框架如下所示。

void dfs(参数) { if (终止条件) { 存放结果; return; } for (选择:本节点所连接的其他节点) { 处理节点; dfs(图,选择的节点); // 递归 回溯,撤销处理结果 } }

四、深搜三部曲:

1.确定递归函数和参数:

void dfs(参数)

一般情况下,深搜需要二维数组的数组结构保存所有的路径,需要一维数组保存单一路径,这种保存结果的数组,可以定义为全局变量,以避免函数参数过多。

vector<vector<int>> result; // 保存符合条件的所有路径 vector<int> path; // 起点到终点的路径 void dfs (图,目前搜索的节点)

2.确认终止条件:防止出现死循环、栈溢出等问题。

if (终止条件) { 存放结果; return; }

3.处理当前搜索节点出发的路径:一般就是使用一个for循环去遍历当前搜索节点所能走到的所有节点。

for (选择:本节点所连接的其他节点) { 处理节点; dfs(图,选择的节点); // 递归 回溯,撤销处理结果 }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:50:02

.NET拼音处理终极指南:Pinyin4NET完整功能解析与实战应用

.NET拼音处理终极指南&#xff1a;Pinyin4NET完整功能解析与实战应用 【免费下载链接】Pinyin4NET c# 拼音汉字/姓相互转换工具库 (这只是镜像仓库&#xff0c;源仓库见 https://gitee.com/hyjiacan/Pinyin4Net) 项目地址: https://gitcode.com/gh_mirrors/pi/Pinyin4NET …

作者头像 李华
网站建设 2026/6/9 18:45:38

医学影像AI开发革命:从代码堆砌到配置驱动的范式转变

医学影像AI开发革命&#xff1a;从代码堆砌到配置驱动的范式转变 【免费下载链接】MONAI AI Toolkit for Healthcare Imaging 项目地址: https://gitcode.com/GitHub_Trending/mo/MONAI 还在为医学影像AI项目中的重复编码、环境配置、模型部署而焦头烂额吗&#xff1f;想…

作者头像 李华
网站建设 2026/6/10 10:53:46

gradio快速部署大模型进行问答

一、模型准备 1. 下载模型&#xff1a;Qwen3-4B-Instruct-2507 import os # 1. 优先设置环境变量&#xff08;必须在导入transformers之前&#xff01;&#xff09; os.environ["HUGGINGFACE_HUB_CACHE"] r"D:\plc\cache" os.environ["HF_ENDPOINT…

作者头像 李华
网站建设 2026/6/10 10:52:51

5步搞定:ADS仿真中ATC电感电容模型库的完整应用指南

5步搞定&#xff1a;ADS仿真中ATC电感电容模型库的完整应用指南 【免费下载链接】ADS仿真ATC模型库下载与使用指南 ADS仿真ATC模型库下载与使用指南 项目地址: https://gitcode.com/open-source-toolkit/d7c29 还在为ADS仿真找不到准确的ATC模型而烦恼吗&#xff1f;&am…

作者头像 李华
网站建设 2026/6/10 9:18:01

TinyMCE5支持CMS系统word图片压缩

&#x1f680;【.NET老油条的TinyMCE插件暴风开发实录】&#x1f680; &#xff08;附&#xff1a;QQ群红包密码&#xff1a;“680元暴富”&#xff0c;进群领红包抽提成&#xff0c;群主已疯&#xff01;&#xff09; 一、需求翻译&#xff08;甲方爸爸の黑话转码&#xff09…

作者头像 李华
网站建设 2026/6/10 9:19:34

TinyMCE6导入pdf支持文本搜索功能

企业网站后台管理系统Word/微信公众号内容粘贴功能集成方案 一、需求分析与背景 作为贵州某集团企业的项目负责人&#xff0c;我们近期在企业网站后台管理系统的升级项目中遇到了一个新的需求&#xff1a;需要在现有的文章发布模块中增加Word粘贴、Word文档导入以及微信公众号…

作者头像 李华