搜索
因为这是十分基础的东西,所以反而有些忽略
写这篇博客,方便复习
搜索,最基础的算法
基础到无法再基础的算法
为了引出搜索,我们不得不说说什么叫做“遍历”
遍历,正如其名,是将所有的可能性全都看一遍
比如把书架上所有的书都看一遍
这就是遍历。
然而,这种单纯的遍历会导致一些问题无法解决
例如,找一条通往书架的路
这种的一般的循环遍历就无法解决了
原因在于,我们无法找到一种顺序令程序能够有效地找到路径
于是我们就引出了搜索
它被人们称为:优雅的暴力
与遍历相似,它将所有的可能都遍历一遍,一个不落
为了保证不漏,甚至在一些比较粗略的代码里,搜索会重复看一本书很多遍
但与遍历不同的是,它不再单纯允许“从头到尾”这一种简单的顺序
寻找路径这类的“复杂顺序”的问题也可以轻松解决
这与它的工作模式有关
搜索将问题分为数层(以找通向书架的路为例,这所谓层也许就是“每一步”吧)
每一层有不同的决策(还是书架,这里的决策,也就是“往哪个方向前进”)
每一层的每一个决策通往下一层的下一个决策
一直通往终点状态(找到了书架或是撞墙)
不同的搜索采取不同的策略
有的会选一个方向前进然后选方向再前进然后再前进然后……(DFS,深度优先搜索)
有的会将搜索范围不断扩大直到将终点纳入搜索范围(BFS,广度优先搜索)
还有许多种不同的搜索方式
这就是搜索了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架