搜索算法

✍ dations ◷ 2025-02-24 07:58:43 #搜索算法


在计算机科学中,搜索算法是解决搜索问题的任何算法,即检索存储在某个数据结构中的信息,或者在问题域的搜索空间中计算的信息。这种结构的例子包括但不限于链表,数组数据结构或搜索树。合适的搜索算法通常取决于正在搜索的数据结构,并且还可能包括有关数据的先前知识。搜索还包含查询数据结构的算法,例如SQL SELECT命令。

搜索算法可以根据搜索机制进行分类。线性搜索算法以线性方式检查每个与目标关键字关联的记录。二进制或半间隔搜索,重复定位搜索结构的中心,并将搜索空间分成两半。比较搜索算法通过基于键的比较相继地消除记录来改进线性搜索,直到找到目标记录为止,并且可以按照定义的顺序应用于数据结构。数字搜索算法基于使用数字键的数据结构中的数字属性工作。最后,哈希根据散列函数直接将键映射到记录。在线性搜索之外进行搜索需要以某种方式对数据进行排序。

搜索功能也根据其复杂性或最大理论运行时间进行评估。例如,二进制搜索函数的最大复杂度为 O log ( n ) {displaystyle {mathsf {O}}log({text{n}})} 或对数时间。这意味着查找搜索目标所需的最大操作次数是搜索空间大小的对数函数。

在约束满足问题中使用搜索虚拟空间的算法,其目标是找到一组赋值给某些变量的值赋值,以满足特定的数学方程和不等式 。当目标是找到一个可以最大化或最小化这些变量的某个函数的变量赋值时,也会使用它们。针对这些问题的算法包括基本的强力搜索(也称为“天真”或“非信息”搜索)以及尝试利用关于该空间结构的部分知识的各种启发式算法,如线性松弛,约束生成,和约束传播。

一个重要的子类是局部搜索方法,它将搜索空间的元素视为图的顶点,其边由适用于该案例的一组启发法定义; 并且通过沿着边缘从物品移动到物品来扫描空间,例如根据最速下降或最佳优先标准,或者在随机搜索中。这一类包括各种通用的启发式方法,如模拟退火,禁忌搜索,A-团队和遗传编程,它们以特定的方式结合了任意的启发式方法。该类还包括各种树搜索算法,将元素视为树的顶点,并以某种特定顺序遍历树。后者的例子包括深度优先搜索和广度优先搜索等详尽的方法,以及各种基于启发式的搜索树修剪方法,如回溯和分支定界。与一般的metaheuristics不同,后者至多只能以概率的方式工作,如果给予足够的时间,许多这些树搜索方法都能保证找到确切的或最优的解决方案。这被称为“ 完整性 ”。

另一个重要的子类包括用于探索多玩家游戏(例如国际象棋或西洋双陆棋)的游戏树的算法,其中节点包括可能由当前情况导致的所有可能的游戏情况。这些问题的目标是找到提供最佳赢球机会的举措,同时考虑到对手的所有可能举措。当人类或机器必须作出连续的决定,其结果不完全在其控制之下时,例如在机器人指导或营销,财务或军事战略规划中,就会出现类似的问题。这种问题 - 组合搜索- 在人工智能的背景下进行了广泛的研究。这个类的算法的例子是极小极大算法,alpha-beta修剪,*信息搜索和A *算法。

名称“组合搜索”通常用于查找给定离散结构的特定子结构的算法,例如图形,字符串,有限组等。术语组合优化通常用于当目标是找到具有某个参数的最大值(或最小值)的子结构时。(由于子结构通常在计算机中用一组带有约束的整数变量来表示,所以这些问题可以看作是约束满足或离散优化的特例;但它们通常是在一个更抽象的情况下制定和解决的,内部表示没有明确提及。)

一个重要且广泛研究的子类是图算法,特别是图遍历算法,用于查找给定图中的特定子结构 - 例如子图,路径,电路等。例子包括Dijkstra算法,Kruskal算法,最近邻算法和Prim算法。

这个类别的另一个重要子类是字符串搜索算法,它搜索字符串内的模式。两个着名的例子是Boyer-Moore和Knuth-Morris-Pratt算法,以及一些基于后缀树数据结构的算法。

1953年,美国统计学家杰克基弗设计了斐波纳契搜索,它可以用来找到单峰函数的最大值,并且在计算机科学中有很多其他应用。

还有为量子计算机设计的搜索方法,如Grover算法,即使没有数据结构或启发式的帮助,它在理论上也比线性或强力搜索更快。

相关

  • 肺囊虫肺炎肺囊虫肺炎(Pneumocystis pneumonia)是一种单细胞真菌(yeast,在此指的是单细胞霉菌,而非酵母菌)引起的肺炎,病原体是卡氏肺囊虫(Pneumocystis jiroveci,旧名Pneumocystis carinii)
  • 蓝脑计划蓝脑计划(英语:Blue Brain Project)尝试利用分子层级的哺乳类脑部逆向工程建立一个电脑模拟脑。该计划于2005年5月由瑞士洛桑联邦理工学院脑与心理研究所(EPFL)在瑞士成立,其任务
  • 大马士革玫瑰突厥蔷薇(学名:Rosa x damascena)为蔷薇科蔷薇属下的一个杂交种,也叫大马士革蔷薇或大马士革玫瑰(Damask rose),或有时被称为 the rose of Castile,杂交自法国蔷薇(Rosa gallica)和 麝
  • 崔泰福崔泰福(韩语:최태복,1930年12月1日-),出生于朝鲜平安南道南浦市港口区。万景台革命学院毕业,曾留学东德的莱比锡工业大学。1978年9月,担任金策工业大学校长。1981年5月任教育委员会
  • 周汝登张岱《越中三不朽图赞》之周海门公像周汝登(1547年-1629年),字继元,号海门,人称“海门先生”,浙江嵊县人。明朝学者、政治人物。万历五年(1577年)丁丑进士。授南京工部主事,历兵、吏二
  • BadlockBadlock是于2016年4月12日披露的安全漏洞,其影响Windows和Samba服务器所支持的安全帐户管理器(SAM)和本地安全认证(域策略)(LSAD)远程协议。SAM及LSD为DCE 1.1远程过程调用(DCE/RPC)
  • 金熙德金熙德(朝鲜语:김희덕 ,1954年-)是中国朝鲜族学者,生于吉林省延吉市。1982年1月从延边大学政治系毕业,1985年1月延边大学日本哲学史专业硕士研究生毕业,留校任讲师。1989年3月起在日
  • 安从进安从进(?-942年),是五代官员。先祖是振武索葛部人。祖父、父亲皆事唐为骑将。从进少年时即以勇力著称,早年是唐庄宗的护驾马军都指挥使,成为贵州刺史,明宗时为保义彰武军节度使。93
  • 陈至洁陈至洁(Titus Chen)是一名台湾政治学、国际关系学者,目前担任国立中山大学政治学研究所副教授、台港国际研究中心主任。早年毕业于国立政治大学外交系、美利坚大学硕士,并且从加州大学尔湾分校取得博士学位。专门研究范畴为国际关系理论、国际规范与国际建制以及国际关系史,另外对于国际人权问题也有不少涉猎。
  • Google PixelGoogle Pixel是由Google在2013年起推出的智能硬件系列,包括Android智能手机、Android平板电脑以及Chromebook笔记本电脑。该系列最大的特色是Google负责硬件设计,Google Nexus系列则是主要由制造商设计硬件。Google Pixel/Pixel XL是Google在2016年10月4日推出的全新Android智能手机系列,接任之前的Nexus系列。在2016年10月5日凌晨Google秋季发布会上,Google发布两款Google Pixel、Pixel