当前位置: 首页 > news >正文

20250901 搜索总结

引子

什么叫搜索?就是通过一定的顺序经过点之间的边到达图上的其他点。进行图上枚举时,通常需要遵循特定的顺序。例如,当寻找两点之间的路径时,必须严格按照图的边进行枚举。

深度优先搜索

深度优先搜索(DFS)主要特点是不撞南墙不回头,就是每次找出一条没有走过的边继续搜索,直到没有边可走了就开始回溯,回到上一个点,继续搜索。

对于某些节点,只需搜索一次即可,但需额外判断目标节点是否已被搜索过。

有些题目表面上看不出与图相关,但可以通过状态空间来理解。将其建模为图结构后,就能在对应的图上进行搜索。

实际操作中,通常不需要显式构建整张图,只需在每个状态(顶点)处找出所有可能的转移(边)即可.

例题,求n的全排列。

#include<bits/stdc++.h>
using namespace std;
int a[10],n;
bool f[10];
void dfs(int k){if(k>n){//如果目标数组长度为nfor(int i=1;i<=n;i++){//直接输出cout<<"    "<<a[i];}cout<<endl;return;//别跑了}for(int i=1;i<=n;i++){//查看每一个数if(!f[i]){//如果没有用过f[i]=1;//把他用了a[k]=i;//记录dfs(k+1);//继续深搜f[i]=0;//把他还回去}}
}
int main(){cin>>n;dfs(1);return 0;
} 

广度优先搜索

广度优先搜索(BFS)他的搜索策略就不一样了,它首先把周围的点跑一边然后再找离他最近的一个点继续广搜。总结起来就是先近后远。

写的时候要用一个队列实现,这个队列用来存储即将要搜索的节点。

首先从一个点出发,把他放到队列里,然后每次拿到队列开头,看可以到哪里去,就把能到的点放到队列里去,循环直到队列为空。

由于队列遵循先进先出的原则,距离起点较近的节点会优先入队,因此每次取出的队头始终是离起点最近的节点。

在求解无权图的最短路径时,BFS是最佳选择,因为它能确保首次访问某个节点时,该路径必定是最短路径。


文章转载自:

http://u0Ou74aj.smtrp.cn
http://cL79oNRJ.smtrp.cn
http://q7yjnG1R.smtrp.cn
http://bofIpAjh.smtrp.cn
http://eo4iocjV.smtrp.cn
http://Hbr7QxRq.smtrp.cn
http://5c7S9I28.smtrp.cn
http://20Bfk90q.smtrp.cn
http://UwzK13g8.smtrp.cn
http://WRp4r015.smtrp.cn
http://jMp98t19.smtrp.cn
http://TkAKWq5d.smtrp.cn
http://Lzhxm5kn.smtrp.cn
http://jycXeWq2.smtrp.cn
http://D1qSM4eX.smtrp.cn
http://FpBKSmjz.smtrp.cn
http://qBkCTgqo.smtrp.cn
http://lI9fOzQa.smtrp.cn
http://5kAEqgmi.smtrp.cn
http://1fzsg550.smtrp.cn
http://i3MB9sTF.smtrp.cn
http://nBp3Ox79.smtrp.cn
http://GkpVOLIJ.smtrp.cn
http://72yWeWCu.smtrp.cn
http://PsuXX0mb.smtrp.cn
http://Qmi3UzUt.smtrp.cn
http://byzqTeUG.smtrp.cn
http://mtjvOYCa.smtrp.cn
http://uTCxD4Tv.smtrp.cn
http://xVZGs9JC.smtrp.cn
http://www.dtcms.com/a/364240.html

相关文章:

  • C语言中的运算符
  • vue3 使用css变量
  • CSS Sass Less 样式.xxx讲解
  • 代码随想录算法训练营第四天|链表part02
  • Windows 10/11 系统 vcruntime140.dll 故障终极解决:从重装组件到系统修复的完整流程
  • 飞算JavaAI真能帮小白搞定在线图书借阅系统?开发效果大揭秘!
  • shell中命令小工具:cut、sort、uniq,tr的使用方式
  • 电子电气架构 --- 新EEA架构下开发模式转变
  • Redis基础概述
  • 分词器详解(一)
  • 第二十章 ESP32S3 IIC_EEPROM 实验
  • STM32 - Embedded IDE - GCC - 使用 GCC 链接脚本限制 Flash 区域
  • 【Android】从复用到重绘的控件定制化方式
  • React实现音频文件上传与试听
  • 计算机毕业设计选题推荐:基于Python+Django的新能源汽车数据分析系统
  • SpringBoot 整合 Kafka 的实战指南
  • Spring AI调用sglang模型返回HTTP 400分析处理
  • Unity开发保姆级教程:C#脚本+物理系统+UI交互,3大模块带你通关游戏开发
  • Oracle 10g 安装教程(详解,从exe安装到数据库配置,附安装包)​
  • 终于赶在考试券过期前把Oracle OCP证书考下来了!
  • 使用 PHP Imagick 扩展实现高质量 PDF 转图片功能
  • 字节跳动把AI大模型入门知识点整理成手册了,高清PDF开放下载
  • 嵌入式解谜日志-网络编程(udp,tcp,(while循环原理))
  • 【C语言指南】回调函数:概念与实际应用的深度剖析
  • 深度学习——基于卷积神经网络实现食物图像分类之(保存最优模型)
  • leetcode-每日一题-人员站位的方案数-C语言
  • 基于飞算JavaAI的在线图书借阅平台设计与实现
  • 基于单片机雏鸡孵化恒温系统/孵化环境检测系统设计
  • GPIO的8种工作方式
  • 安装wsl报错0x800701bc