搜索入门

夜深人静写算法(一)- 搜索入门 简要介绍计算机两大图论搜索算法:深度优先搜索和广度优先搜索 阅读详情

搜索入门

•BFS(广搜):这是一种基于队列这种数据结构的搜索方式,它的特点是由每一个状态可以扩展出许多状态,然后再以此扩展,直到找到目标状态或者队列中头尾指针相遇,即队列中所有状态都已处理完毕。    (找最短路径)
•DFS(深搜):基于递归的搜索方式,它的特点是由一个状态拓展一个状态,然后不停拓展,直到找到目标或者无法继续拓展结束一个状态的递归。(能不能找到)
•
•优缺点:
•BFS:对于解决最短或最少问题特别有效,而且寻找深度小,但缺点是内存耗费量大(需要开大量的数组单元用来存储状态)。
•DFS:对于解决遍历和求所有问题有效,对于问题搜索深度小的时候处理速度迅速,然而在深度很大的情况下效率不高
。

BFS:

实现广度优先搜索,也要遵守三个规则:
(1) 访问下一个未来访问的邻接点,这个顶点必须是当前顶点的邻接点,标记它,并把它插入到队列中。
(2) 如果因为已经没有未访问顶点而不能执行规则1时,那么从队列头取一个顶点,并使其成为当前顶点。
(3) 如果因为队列为空而不能执行规则2,则搜索结束。

根据特点一
如下图
所示


核心代码
struct node {
    int x, y, step;
}
int to[4][2] = {1,0,-1,0,0,1,0,-1};  //向四个方向搜索
int check(int x,int y)  
{  
    if(x<0 || y<0 || x>=n || y>=m || map[x][y] == -1)  
        return 1;  
    return 0;  
}  
int bfs()
{
    queue<node> Q;//priority_queue<node> Q;用优先队列更节约空间
    node a, next;
    a.x = 0;//这里以(0,0)为起点为例,但具体问题具体实现。
    a.y = 0;
    a.step = 0;//初始化
    Q.push(a);//进入队列
while(!Q.empty())  //为空返回1,否则返回0
    {  
        a = Q.top();  //显示堆顶
        Q.pop();  //删除堆顶
        if(a满足条件)  
            return a.step; //满足条件就返回 
        for(i = 0; i<4; i++)  //向四个方向搜索
        {  
            next = a;  
            next.x+=to[i][0];  
            next.y+=to[i][1];  
            if(check(next.x,next.y))  //超出范围或走过,就跳过
                continue;  
            a.step++;//使步伐加一
            map[next.x][next.y] = -1;//标记为走过  
            Q.push(next);  //进入队列
        }  
   }
}


DFS:

为了实现深度优先搜索,首先选择一个起始顶点并需要遵守三个规则:
(1) 如果可能,访问一个邻接的未访问顶点,标记它,并把它放入栈中。
(2) 当不能执行规则1时,如果栈不空,就从栈中弹出一个顶点。
(3) 如果不能执行规则1和规则2,就完成了整个搜索过程。

根据搜索特点一般用递归实现




 //核心代码
int n,m;//n为行数,m为列数
 int ok =0;
 int  to = {0,-1,0,1,-1,0,1,0}; //一般向四个方向搜索
 void dfs(int x, int y)
 {
 if(map[x][y] 满足条件) {ok= 1;return;}//找到目标,返回
 for (int i =0; i < 4; i++)
   {
       int xx =x + to[i][0];
       int yy = y+ to[i][1];
       if(xx<0 || yy<0|| xx>=n || yy>=m|| map[xx][yy]==‘*’)continue;//超出范围或者是墙,就跳过
       map[xx][yy]  = ‘*’;//设为墙,换句话说过不去
       dfs(xx,yy);
       map[xx][yy]=  ‘.’;
       if(ok) return;//找到目标就返回,节约时间。
   }
 }






Elasticsearch 数据搜索篇·【入门级】 ES即简单又复杂,你可以快速的实现全文检索,又需要了解复杂的REST API。本篇就通过一些简单的搜索命令,帮助你理解ES的相关应用。虽然不能让你理解ES的原理设计,但是可以帮助你理解ES,探寻更多的特性。 其他相关的内容参考:Elasticsearch官方文档翻译 样例数据 为了更好的使用和理解ES,没有点样例数据还是不好模拟的。这里提供了一份官网上的数据,accounts.json。... 阅读详情

相关推荐

日语五十音图速记攻略:从形象联想法到实战训练

语言学习中的记忆编码与条件反射构建是高效掌握基础的关键。其核心原理在于通过将抽象符号与具象图像、故事或已知概念关联,利用大脑对视觉和叙事信息的天然高记忆效率,从而降低认知负荷,加速识别与反应速度。这一方法的技术价值在于将机械重复转化为意义联结,显著提升长期记忆的牢固度与提取速度。在日语学习这一具体应用场景中,五十音图作为表音文字系统,正是实践这一记忆技术的绝佳对象。通过系统化的形象联想、分组对比(如平假名与片假名的对应关系)以及间隔重复的实战训练,学习者可以高效攻克这一入门难关,为后续的词汇、语法学习铺设坚

weixin_29032489的博客 378

好用的搜索工具(非常详细),零基础入门到精通,看这一篇就够了

好用的搜索工具(非常详细),零基础入门到精通,看这一篇就够了

weixin_51725318的博客 6061

从ADS到SystemVue:当简单链路预算不够用时,我的射频系统级仿真方案升级实录

本文详细介绍了从ADS到SystemVue的射频系统级仿真升级路径,重点分析了基础链路预算在多端口元件和复杂场景下的局限性,并提供了SystemVue在非线性系统验证和跨域协同分析中的优势。通过实际案例展示了如何平滑迁移工具链,提升仿真精度和效率,适用于5G、毫米波雷达等现代射频系统设计。

weixin_34233974的博客 343

搜索入门:搜索是怎么回事?

这些数据包括用户用户属性(年龄、性别、地域、学历、收入.......),内容属性(发布时间、时长、作者、图文形式......),行为属性(ctr、vv、下单、付费、下载、活跃、lt......),显著特征(最近租房的人可能需要购买家具、暑期到了旅游旺季、毕业季迎来招聘季......)过滤往往与业务的安全性相关,这一步的目的是剔除掉那些色情、政事、敏感人物相关的内容,所以会有很强的标准作为参考,而且标准是不停变化的,这就需要人工+机器协同进行。一般来说,从你进入到搜索页面,你的搜索行为就算是开始了。

weixin_57642208的博客 702

二维紧束缚模型求解程序

假如我们已经推导出了二维紧束缚模型的哈密顿量矩阵H(kx,ky)的解析形式,那么在整个布里渊区对角化矩阵就可以得到能带。从技术上说这里面有以下几个问题。 1. 缺少实空间和倒空间的坐标,使得能带难以和布里渊区高对称点对应。 2. 最容易处理的布里渊区是矩形,对于其他多边形,如果全布里渊区mesh画费米面有一定技术困难。 因此一个好的处理框架是首先给出实空间原子坐标,给出实空间哈密顿量,...

wwxy1995的博客 4083

Mediapipe手势识别实战——基于关节角度计算实现动态手势分类

本文详细介绍了如何利用Mediapipe进行手势识别,通过计算手指关节弯曲角度实现动态手势分类。文章从基础原理出发,讲解了关节角度计算的数学方法,并提供了Python实现代码。同时,还分享了数字手势和OK手势的识别实战经验,以及性能优化和工程实践中的关键技巧,帮助开发者快速掌握实时手势识别技术。

weixin_26891599的博客 403

搜索算法入门

什么是搜索 搜索算法是利用计算机的高性能来有目的的穷举一个问题解空间的部分或所有的可能情况,从而求出问题的解的一种方法。现阶段一般有枚举算法、深度优先搜索、广度优先搜索、A*算法、回溯算法、蒙特卡洛树搜索、散列函数等算法。在大规模实验环境中,通常通过在搜索前,根据条件降低搜索规模;根据问题的约束条件进行剪枝;利用搜索过程中的中间解,避免重复计算这几种方法进行优化。 ——百度百科 根据百度

yashem66 2751

告别两个电源模块!用UCD3138+四开关Buck-Boost,一个电路搞定电池充放电(附原理图分析)

本文详细介绍了采用UCD3138数字控制器和四开关Buck-Boost拓扑的双向DC/DC变换器设计,实现单一电路完成电池智能充放电管理。该方案显著降低BOM成本和PCB面积,提升系统效率至96.2%,适用于UPS、通信基站和储能系统,具有高效、紧凑和成本优势。

weixin_30256901的博客 397

ACM入门之【搜索】

搜索在ACM中是很重要的。 搜索一般分为DFS和BFS两大类,下面又划分很多的小类。 入门习题: 842. 排列数字 843. n-皇后问题 844. 走迷宫 845. 八数码

辉小歌的博客 454

手搓UDS Bootloader|全网独家复现0x10诊断会话控制、详解会话跳转规则与S3超时机制、助力ECU在线刷写、固件迭代、车规安全升级落地

在车载UDS诊断(ISO 14229)与Bootloader固件升级架构中,0x10诊断会话控制服务是所有高级诊断、固件刷写功能的前置核心与权限管控入口,属于UDS基础必实现服务。车载ECU通过分级会话模式,隔离常规故障诊断、高级标定、固件重编程等高、低权限操作,从协议层面保障车载电控系统的安全性与稳定性。多数嵌入式开发者开发UDS Bootloader时,仅简单实现会话切换报文应答,未吃透会话强制跳转规则、S3安全超时机制、会话权限绑定、APP在线刷写跳转逻辑。

getusushu的博客 465

AI Agent Harness自动化漏洞扫描

本文要介绍的AI Agent Harness自动化漏洞扫描方案,正是为了解决传统漏扫的上述痛点而生。漏洞检出率提升35%以上,逻辑漏洞检出率从不足30%提升到92%误报率从27%降到3%以下,人工复核成本降低90%支持自定义业务系统、IoT、工控等多场景资产扫描,适配成本降低80%内置反馈学习机制,扫描效果越用越好AI Agent是指具备自主感知、决策、行动能力的大模型驱动程序,它可以根据给定的目标,自主调用工具、规划步骤、完成任务。

AI 原生应用开发的博客 473

ElasticSearch(ES) 搜索入门笔记

ElasticSearch(ES) 搜索入门笔记,如何创建mapping,analyzer,如何搜索等

beingstrong的博客 1699

【部署】Ubuntu 24.04.4虚拟机下部署OpenClaw

OpenClaw是一款基于AI的智能助手工具,本文详细介绍了在Ubuntu 24.04.4系统上的三种安装方法。推荐使用一键安装脚本(curl -fsSL https://openclaw.ai/install.sh | bash),自动完成Node.js检测、CLI安装和引导配置。对于开发者,提供了从源码构建的详细步骤,包括环境准备、依赖安装和构建流程。文章还包含常见问题解决方案(如sharp构建错误处理)以及后续维护建议(更新、配置检查和日志查看)。安装完成后,用户可通过终端TUI或Web UI进行初始

海兰 1万+

Google搜索从入门到精通

一篇不错的google搜索运用文章:from http://lilybbs.net/vd555635/main2.html[本篇全文] [回复本文] [本篇作者: 54tw] [本篇人气: 617]发信人: 54tw (NomovieNogames), 信区: Thesis标 题: [转载] Google搜索从入门到精通发信站: 南京大学小百合站 (Mon Mar 1 22:44:

仰望星空 1340

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【算法入门】深度优先搜索(DFS)

【算法入门】深度优先搜索(DFS)

apollo_miracle的博客 1065

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Google搜索从入门到精通 v4.0(一)

1、前言我是在2000年上半年知道Google的。在这之前,我搜索英文信息通常用AltaVista,而搜索中文信息则常用Sina。但自使用了Google之后,它便成为我的Favorite Search engine了。这也得感谢新浪网友曹溪,因为当初正是因为他的大力推介,才使我识得了Google。记得1996年夏季的时候,当我第一次接触Internet,便被扑面而来的魔力征服了。那种天涯咫

shuixianzi00的专栏 1278

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Google搜索从入门到精通 v4.0

■1、前言 我是在2000年上半年知道Google的。在这之前,我搜索英文信息通常用AltaVista,而搜索中文信息则常用Sina。但自使用了Google之后,它便成为我的Favorite Search engine了。这也得感谢新浪网友曹溪,因为当初正是因为他的大力推介,才使我识得了Google。 记得1996年夏季的时候,当我第一次接触Internet,便被扑面而来的魔力征服了。那...

weixin_34318956的博客 383

零基础用AI—秘塔AI搜索入门指南

秘塔AI搜索是一款由上海秘塔网络科技有限公司开发的智能搜索引擎,基于大语言模型和自然语言处理技术,专注于提升中文用户的搜索效率与体验。它通过AI技术实现语义理解、问题分析和信息整合,能自动生成结构化结果(如思维导图、大纲、时间线表格),并支持一键导出文件或生成演示文稿,适用于学术研究、职场办公、内容创作等场景。

qqxhb 资源共享 2万+

Elasticsearch搜索引擎入门到进阶

Elasticsearch是基于Lucene构建的开源搜索引擎,它提供了一个分布式、RESTful的搜索和分析引擎,能够对数据进行实时分析。其高度可扩展性和灵活性使其在处理复杂数据搜索需求时表现出色。优势特点:分布式存储:Elasticsearch可以在多台服务器上存储和检索数据,实现高可用性和负载均衡。:通过HTTP请求,可以轻松地与其他应用程序集成。本文详细介绍了Elasticsearch搜索引擎的入门到进阶内容,从基础概念、搜索查询到性能优化和实践应用等方面进行了全面阐述。

emilio15979289的博客 416

轻松掌握广度优先搜索入门

轻松掌握广度优先搜索入门 广度优先遍历(BFS)是图的搜索算法之一,让我们直接进入主题,来感受一下它! 让我们明白广度的深意,大家是否玩过扫雷(权当大家玩过或者看别人玩过),当点击一个点以后,以这个点为中心,宛如水中落下石子一般荡漾开来,周围的点都会展开,这就像是广度优先搜索的搜索方式 再一个栗子!二叉树的是个容易在大脑中构建的模型,遍历二叉树的时候,如果是一层一层遍历,那么就是广度优先搜索(若是...

Mackyhuang 1280

ACM搜索入门问题模型的构建与分析

写在前面最近一段时间也集中刷了一些搜索的入门题,感觉应该对搜索问题进行一次总结。所以此篇博文是我针对写的题的简单分析,错误无法避免,如果发现欢迎留言改正。另外,由于是分析类的博文,所以代码会很少,算法的代码和题解这里不会出现哒^_^。如果对BFS和DFS的代码都不会,还是推荐学习一下图论以及具体代码,下面写的都是思想了(口胡技能EX)搜索基本算法:BFS与DFS关于BFS与DFS,即广度优先搜索与...

iwts 1080
上一篇: 《走着走着就散了,回忆都淡了》 徐志摩
下一篇: Dijkstra's Algorithm分析以及其优化
也道长
博客等级 码龄9年 11粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值