启发式搜索机器之心

启发式搜索是人工智能一种搜索技术。启发式是一个经验法则,它可能导致一个解决方案。启发式在搜索策略中起着重要的作用,因为大多数问题都具有指数增长得性质。启发式有助于减少从指数数到多项式数的备选方案的数量。在人工智能中,启发式搜索具有普适化得意义,具有更具体的技术含义。在普适化意义上,术语“启发式”用于任何通常有效的建议,但不能保证在任何情况下都有效。然而,在启发式搜索体系结构中,启发式这个术语通常是指一个启发式评价函数的特殊情况。

为了解决较大的问题,必须增加特定领域的知识以提高搜索效率。关于这个问题的信息包括原始状态、从一个状态转变到另一个状态的成本以及目标节点。这些信息通常用启发式评价函数的形式表示,如f(n,G),节点n和/或目标g的函数。

下面是启发式算法例子.

所有的搜索方法在前面的部分是未知的,他们不知道目标是哪一个。他们不使用任何关于要去哪里得信息,除非他们碰巧偶然遇到一个目标。一种关于启发式信息的启发式函数h(n),它用来评价哪些节点最有希望的是一个我们要找的节点,这里n为节点,h(n)会返回一个非负实数,也可以认为是从节点n的目标节点路径的估计成本。如果h(n)是小于或等于实际成本最低成本路径节点n的目标,那么函数h(n)是低估了的,也是可用的(h函数一定要小于等于实际成本)。启发式函数是一种告知搜索方向的方法。它提供了一种明智的方法来猜测哪个邻居节点会导向一个目标。

启发式函数没有什么神奇之处。它必须只使用可以容易获得的关于节点的信息。通常情况下,为一个节点推导一个启发式值所需的工作量和一个节点的启发式值如何从节点到目标的实际路径开销是需要权衡的。推导启发式函数的一种标准方法是求解一个简单的问题,并将简化问题中的实际成本作为原问题的启发函数。

例题分析

对于图3.2,可以用节点与目标位置之间的直线距离作为启发函数。

下面的示例假定如上启发式函数:

这个h函数是低估的,因为h值小于或等于从节点到目标的最低成本路径的精确成本。节点O123确切的成本。节点b1非常低估,这似乎是接近,但只有一个漫长的路线的目标。这对c1很有误导性,它似乎也接近目标,但是从那个节点到目标并没有路径。

考虑示例3.2的运送机器人,其中状态空间包括要递送的包裹。假设成本函数是机器人传送所有包裹的总距离。一个可能的启发式函数是包裹从目的地到目的地的最大距离。如果机器人只能携带一个包裹,那么一个可能的启发函数是包裹必须携带时的距离之和。如果机器人能同时携带多个包裹,这可能就不是一个低估实际成本。

h函数可以扩展到适用于(非空)路径。路径的启发式值是路径末端的节点的启发式值。就是:

启发式函数的简单用法是,将排序的邻居节点依次添加到堆栈中,这表示深度优先搜索的边界。可以将邻居添加到边界,以便首先选择最佳邻居。这就是所谓的启发式深度优先搜索。此搜索选择局部最佳路径,但它在选择其他路径之前从所选路径中探索所有路径。

使用启发式函数的另一种方法是总是在具有最低启发式值的边界上选择一条路径。这叫做最佳优先搜索。它通常不太好;它可以遵循看似有希望的路径,因为它们接近目标,但路径的成本可能会不断增加。

示例如下:考虑图3.8所示的曲线,其中弧的成本是其长度。其目的是找到最短路径从S到G。假设欧氏距离目标G被用作启发函数。启发式深度优先搜索将选择s以下的节点,并且永远不会终止。类似地,因为s下面的所有节点看起来都很好(红色的节点),最好的第一个搜索将在它们之间循环,从不尝试从S的备用路径。而比较好的搜索方式是绿色的节点。

19世纪,法国数学家查尔斯·皮埃尔·特雷莫(CharlesPierreTremaux)对深度优先搜索Depth-firstsearch(DFS)的一个版本进行了研究,认为这是一种解决迷宫的策略。BFS(Breadth-firstsearch)和它在寻找图形的连接部分的应用是由MichaelBurke和KonradZuse在1945年发明的。EdsgerDijkstra在1959年在ARMAC计算机上写出了Dijkstra算法,它来搜索最短路径的算法,只使用f(p)=cost(p)。

在1968年,人工智能研究员尼尔斯·尼尔森(NilsNilsson)试图改进机器人Shakey所做的路径规划,这个机器人原型可以通过在一个包含障碍物的房间进行导航。这种寻路算法,Nilsson称之为A1,是当时最著名的HansBerliner于1979算法的更快版本,用于在图中找到最短路径。BertramRaphael建议对这个算法进行一些重要的改进,并调用了修改后的A2。然后PeterE.Hart引入了一个论证,建立了A2,只有微小的变化,才能成为寻找最短路径的最佳算法。此时A星算法使用的评价函数是f(p)=cost(p)+h(p).

B*(发音为“B星”)是一种最佳的图形搜索算法,它从给定的初始节点到任何目标节点(在一个或多个可能的目标中)找到最小成本路径。由HansBerliner于1979年首次出版。

1985RichardKorfIterativedeepeningA*(IDA*)是一种图遍历和路径搜索算法,它可以在一个加权图中找到指定的起始节点和一组目标节点的任何成员之间的最短路径。它是迭代深化深度优先搜索的一个变体,它借用了一个启发函数来评估剩余的成本,以从a*搜索算法获得目标。由于它是深度优先的搜索算法,它的内存使用率低于A*,但与普通的迭代深化搜索不同,它专注于探索最有希望的节点,因此不会访问。与A*不同,IDA*不使用动态编程,因此经常会多次访问相同的节点。

Russell,S.(1992)SMA*SimplifiedMemoryBoundedA*或简化内存有界A*是基于A*算法的最短路径算法。SMA的主要优点是它使用有界内存,而a*算法可能需要指数内存。SMA的所有其他特征都是从一个A*继承的。

下图是对经典的搜索算法进行总结:

Lowest-cost-first和A*搜索保证找到第一个解决方案的最低成本解决方案。

A

B

C

1

年份

事件

2

1958

Hart,P.E.,Nilsson,N.J.,&Raphael,B.提出A星算法使用两个代价函数作为目标函数

Hart,P.E.,Nilsson,N.J.,&Raphael,B.(1968).Aformalbasisfortheheuristicdeterminationofminimumcostpaths.IEEEtransactionsonSystemsScienceandCybernetics,4(2),100-107.

3

1959

Dijkstra,E.W.提出Dijkstra算法搜索最短路径

Dijkstra,E.W.(1959).Anoteontwoproblemsinconnexionwithgraphs.Numerischemathematik,1(1),269-271.

4

5

1985

Korf,R.E.对A星算法进行了优化减小了A星算法的消耗

Korf,R.E.(1985).Depth-firstiterative-deepening:Anoptimaladmissibletreesearch.Artificialintelligence,27(1),97-109.

一个正确的贪心算法拥有很多优点,比如思维复杂度低、代码量小、运行效率高、空间复杂度低等,是信息学竞赛中的一个有力武器。缺点:贪心法的缺点集中表现在他的“非完美性”。通常我们很难找到一个简单可行并且保证正确的贪心思路,即使我们找到一个看上去很正确的贪心思路,也需要严格的正确性证明。这往往给我们直接使用贪心算法带来了巨大的困难。

其实搜索算法一直是最优值和复杂度之间的权衡,也是大家一直研究的问题。目前也已经有很多成熟的搜索算法可以直接运用。搜索算法可以分为四类,大家可以根据不同的类型对它们进行研究:1.为了虚拟搜索空间的算法,比如minimaxalgorithm,alpha–betapruning;2.对于给定结构的子结构,如Dijkstra'salgorithm,Kruskal'salgorithm,thenearestneighbouralgorithm,andPrim'salgorithm;3.搜索功能的最大值;4.量子计算机,比如Grover'salgorithm。

THE END
1.数学建模——启发式算法(模拟退火遗传算法)启发式算法是基于直观或经验构造的算法,在可接受的计算时间和空间条件下,给出待解决优化问题的一个可行https://kaiwu.qboson.com/forum.php?mod=viewthread&tid=431&extra=page%3D1
2.启发式算法详解:贪心禁忌搜索模拟退火遗传算法本文详细介绍了启发式算法,包括贪心算法、禁忌搜索、模拟退火算法、遗传算法的原理和应用。贪心算法每次选择局部最优解,禁忌搜索通过禁忌列表避免局部最优解,模拟退火算法引入随机性和温度控制,遗传算法模拟生物进化优化解。这些算法在不同问题和领域中有广泛应用。 https://blog.csdn.net/runqu/article/details/138411522
3.超启发式算法的分类有哪些?LTD知识百科增长黑武器由于超启发式算法的研究尚处于起步阶段,对于已有的各种超启发式算法,国际上尚未形成一致的分类方法。按照高层策略的机制不同,现有超启发式算法可以大致分为4类:基于随机选择、基于贪心策略、基于元启发式算法和 由于超启发式算法的研究尚处于起步阶段,对于已有的各种超启发式算法,国际上尚未形成一致的分类方法。按照高层https://ltd.com/article/5377476944108263
4.什么叫启发式算法,主要优点和不足有哪些?什么叫启发式算法,主要优点和不足有哪些?相关知识点: 试题来源: 解析 答:在问题结构不良的情况下,为得到近似可用的解,分析人员必须运用自己的感知和洞察力,从与其有关而较基本的模型及算法中寻求其间的联系,从中得到启发,去发现适于解决该问题的思路和途径,这种方法称为启发式方法,由此建立的算法称为启发式算法。https://easylearn.baidu.com/edu-page/tiangong/bgkdetail?id=fe2ebc0feff9aef8941e0627&fr=search
5.以下对基因遗传算法描述正确的是()。B是一种启发式的搜索算查看完整题目与答案 参考解析: 基因遗传算法反映了自然选择的过程;是一种启发式的搜索算法 AI解析 重新生成最新题目 【单选题】如果将人眼比作照相机的话,则相当于暗盒的是( )。 查看完整题目与答案 【单选题】道德是人类社会生活中依据社会舆论、( )和内心信念,以善恶评价为标准的意识、规范、行为和https://www.shuashuati.com/ti/c593711798a74c9a982cf55a7b69423c.html?fm=bd678dea3fa47e926b67e67cbef0c20e02
6.算法式和启发式提出假设就是提出解决问题的可能途径与方案,选择恰当的解决问题的操作步骤,提出假设是问题解决的关键阶段。常用的方式主要有两种:算法式和启发式。它们之间的区别是: 一、算法式 【定义】 算法式是把解决问题的所有可能的方案都列举出来,逐一尝试。此种方式虽然可以保证解决问题,但效率不高。其优点是能够保证问题的解http://m.tj.zgjsks.com/html/2020/zx_0417/33684.html
7.启发式算法设计中的骨架分析与应用37, No. 3 March, 2011 启发式算法设计中的骨架分析与应用 江贺 1 邱铁 1 胡燕 1 李明楚 1 罗钟铉 1, 2 摘要 骨架是指一个 NP- 难解问题实例的所有全局最优解的相同部分, 因其在启发式算法设计中的重要作用而成为该领域 的研究热点. 本文对目前骨架及相关概念的研究成果进行了全面综述, 将骨架本身的http://www.aas.net.cn/CN/article/downloadArticleFile.do?attachType=PDF&id=17389
8.路径规划(十)启发式InformedRRT*算法可能有人会直接想,这里只不过是缩小了采样空间,并不会明显改进算法。但是实际上,当拓展到高维空间时,效率的提升是巨大的。 那么,如何表达这个椭圆呢?下面介绍椭圆采样区域的表达方式 方法1: 先在标准椭圆的方程中采样,再将采样点旋转平移到实际采样区域,需要两个矩阵:平移向量、旋转矩阵。这两个参数只需要在初始化https://www.baltamatica.com/community/sposts/detail/9ba5d708-d44e-a616-28f8-02bdf52cbfb8.html
9.双重信息编码遗传算法在选址模型中的应用AET目前,越来越多的研究人员趋向于采用遗传算法、拉格朗日松弛法、模拟退火算法等启发式算法来达到或逼近该问题的最优解[2]。参考文献[3]使用两步骤近似法构建在库存和运输双重能力约束下,每个周期配送中心的库存成本计算方法,分别用遗传算法、克隆选择算法、粒子群算法求解所建立的模型;参考文献[4]使用经遗传算法改进的人http://www.chinaaet.com/article/185115