DFS 、BFS、回溯

news2024/9/20 16:56:30

1、dfs(res,当前结构,当前候选热数据,当前目标值,当前搜索的层级)
在这里插入图片描述
2、BFS(Breadth first search)
对于树来说,BFS就是层次遍历
而图的BFS 与树的BFS 不同点在于,树有根节点,图没有,所以图的BFS 要任意选择某节点进行遍历。
如图,若选择A节点作为开始节点,与A直接相连的节点为B和C,则下一层遍历是B和C。
A B C D E F
注意,B 和C 调换顺序没关系,但是DE不能调换,因为要先展开节点B,与B相连的有点A、C 、D,AC 以及遍历,只剩D节点,所以必须先遍历D节点
所以通常BFS不止一种结果
通常BFS借助队列来实现,将A放入队列中,弹出A的同时将A的所有临界点B、C放入队列,再弹出B ,同时将B的所有临界点D(A、C已经遍历过,不再入队列)放入队列,弹出C ,同时将C 的邻接点E放入队列,最后再一次弹出队列中的值。
在这里插入图片描述
DFS(Depth first search)
一条路走到黑
A B D F E C
同样的,在每个节点的选择很多,所以BFS结果也不止一种
与BFS 不同的是,DFS借助栈来实现遍历
3、当边上出现权值时,如何计算最短距离
在这里插入图片描述

优先队列Priority Queue

回溯

回溯法都可以抽象为树结构

//回溯算法模板
void  backtracking(参数){
	if(终止条件)	{
		存放结果 ;
		return}

    for(选择:集合的元素集(树中节点孩子数量为集合大小)){
		处理节点(结果集的来源);
		//递归
		backtracking(路径,选择列表);
		回溯操作(撤销/弹出处理结果);
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPIO口,232串口,USB接口,485接口等接口保护电路

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录前言一、GPIO口1、输入端2、输出端二、USB口三、232口前言 送给大学毕业后找不到奋斗方向的你(每周不定时更…

Ansible最佳实践之 AWX 启用facts缓存和模板问卷调查

写在前面 分享一些 AWX 启用facts缓存和模板问卷调查的笔记博文内容涉及: 启动facts缓存相关配置Demo启用模板调查来设置变量demo 食用方式: 需要了解 Ansible理解不足小伙伴帮忙指正 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去&a…

基础入门 - Spring Boot HelloWorld 第二节

简化配置 Spring Boot 把所有的配置都固定编写在 application.properties 里,文件名是固定写法,不能改 我们如果想更改配置,几乎所有的配置都在这里面更改就可以,而且,就算你不更改,不编写配置,…

计算机毕业设计java基于springboot医院急诊挂号系统

项目介绍 开发语言:Java 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架:springbootvue 人难免会有生病的时候,尤其是当一些突发情况下,一旦发生一些疾病很可能会危及生命。这时候如果按照常规的方式进行挂号是很浪费时间…

SwiftUI 中的水平条形图

水平条形图以矩形条的形式呈现数据类别,其宽度与它们所代表的数值成正比。本文展示了如何在垂直条形图的基础上创建一个水平柱状图。 水平条形图不是简单的垂直条形图的旋转。在 Numbers 等应用程序中,水平条形图被定义为独立的图表类型,而不是垂直条形图。除了条形差异外…

Jsp基础了解(一)

文章目录JSP1,JSP 概述2,JSP 快速入门2.1 搭建环境2.2 导入 JSP 依赖2.3 创建 jsp 页面2.4 编写代码2.5 测试3,JSP 原理4,JSP 脚本4.1 JSP 脚本分类4.2 案例4.2.1 需求4.2.2 实现4.2.3 成品代码4.2.4 测试4.3 JSP 缺点5&#xff0…

实验模拟TCP连接的各种异常情况(三次握手丢包,两端异常)

实验模拟TCP连接的各种异常情况(三次握手丢包,两端异常) 环境搭建 秋招结束,闲来无事,正好把计算机网络一些协议实验过一遍,于是用vmware搭建了一个两机通信的环境,在建立环境的过程中遇到了一…

HTTP Mime-Type对照表

HTTP Mime-Type对照表 : Content-Type(Mime-Type) 文件扩展名 小贴士:CtrlF 快速查找 Mime-Type类型 文件扩展名Content-Type(Mime-Type)文件扩展名Content-Type(Mime-Type).*(二进制流,不知道下载文件类型&#xff09…

Java基础教程:多线程(4)-----线程的生命周期

任何对象都有生命周期,线程也不例外,它也有自己的生命周期。线程的整个生命周期分为六个阶段,分别是新建状态(New)、可运行状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)、等待状态(Waiting)和死亡状态(Terminated),线程…

1 基础知识

基础知识 1 汇编语言产生 1.1 机器指令 机器语言是机器指令的集合。机器指令展开来讲就是一台机器可以正确执行的命令。电子计算机的机器指令是一列二进制数字。计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,进行运算。 每一种微处理…

r语言绘制动态统计图:绘制世界各国的人均GDP,出生时的期望寿命和人口气泡图动画动态gif图

使用的数据 nations.csv 来自世界银行指标的数据。warming.csv 有关1880年至2017年全球年平均温度 。 yearvalue 全球平均温度,与1900-2000年的平均温度相比。 simulations.csv美国国家航空航天局(NASA)对历史温度的模拟数据,估计…

NetSuite Plug-In 101

进入了我的学术休假季,开始做一些自己喜欢的题目。今天就来扒一扒一个NetSuite落满灰尘的功能--Plug-In。 大家可能听到过一个叫做Email Approval的应用场景,可以让用户在不登录NetSuite系统的情况下,跟NetSuite产生交互。例如,通…

ArcGIS基础:字段的别名和字段属性域设置

【1】别名设置: 别名设置时需要注意的是在SHP格式里,进行设置仅仅是临时存贮,关闭属性表后,属性的别名就会丢失,需要将其存储到地理数据库里才可以永久包括。 存放在地理数据库后,找到数据,右…

Replugin 插件中MutliDex 分多包 后加载插件报错的问题解决

Caused by: java.lang.ClassNotFoundException: Didn’t find class “com.qihoo360.replugin.Entry” on path: DexPathList[[zip file “/data/app/com.topdraw.replugintest2-1/base.apk”],nativeLibraryDirectories[/data/app/com.topdraw.replugintest2-1/lib/x86, /syst…

图论算法(2)—————拓扑排序

在几天前写了一篇最小生成树的文章 今天再讲解一下图论的另一个算法:拓扑排序 注:今天只讲解kahn算法,各位如果对dfs算法有需求可联系我进行讲解 说到拓扑排序,不得不先了解下拓扑是个什么东东 拓扑,它是一种结构 …

Elasticsearch 进阶

一、核心概念 1.1 索引(Index) 一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母),并且当我们要对这个索引中的文档进行索引、搜索、更新…

[附源码]计算机毕业设计JAVA音乐交流平台

[附源码]计算机毕业设计JAVA音乐交流平台 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis M…

【数字逻辑】——逻辑函数及其简化(学习笔记)

📖 前言:1849年英国数学家乔治,布尔( George Boole )首先提出了描述客观事物逻辑关系的数学方法﹣布尔代数。1938年克劳德.香农( Claude E . Shannon )将布尔代数应用到继…

深度学习-BN(Batch Normalization)

1. 介绍 Batch Normalization是2015年一篇论文中提出的数据归一化\color{blue}{数据归一化}数据归一化方法,往往用在深度神经网络中激活层之前。其作用可以加快模型训练时的收敛速度,使得模型训练过程更加稳定,避免梯度爆炸或者梯度消失。并且…

postgresql 数据库导出和导入

简介 本篇文章主要介绍PostgreSQL库和表的导出和导入以及常用的数据库管理工具的使用 一、数据库的导出和导入 1. 使用pgAdmin导出和导入数据库 导出 导入 新建数据库,右键Restore 2. 使用Navicate导出和导入数据库 导出 选择要导出的数据库,点…