版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、启发式搜索" 启发 "( heuristic) 是关于发现和发明规则及方法的研究。 在状态空间搜索 中 , 启发式被定义成一系列规则 , 它从状态空间中选择最有希望到达问题解的 路径。 人工智能问题求解者在两种基本情况下运用启发式策略 :1. 一个问题由于在问题陈述和数据获取方面固有的模糊性可能使它没有一 个确定的解。 医疗诊断即是一例。 所给出的一系列症状可能有多个原因 ; 医生运 用启发搜索来选择最有可能的论断并依此产生治疗的计划。视觉问题又是一例。 看到的景物经常是模糊的 , 各个物体在其连接、范围和方向上可以有多个解释。 光所造成的幻觉加大了这些模糊性 , 视觉系统
2、可运用启发式策略选择一给定景 象的最有可能解释。2. 一个问题可能有确定解 , 但是求解过程中的计算机代价令人难以接受。 在很多问题 (如国际象棋 )中, 状态空间的增长特别快 , 可能的状态数随着搜索 的深度呈指数级增长、 分解。在这种情况下 , 穷尽式搜索策略 , 诸如深度优先或 广度优先搜索 , 在一个给定的较实际的时空内很可能得不到最终的解。 启发式策 略通过指导搜索向最有希望的方向前进降低了复杂性。通过仔细考虑 , 删除某 些状态及其延伸 , 启发式算法可以消除组合爆炸 , 并得到令人能接受的解。然而 , 和发明创造的所有规则一样 , 启发式策略也是极易出错的。在解决 问题过程中启发
3、仅仅是下一步将要采取措施的一个猜想。 它常常根据经验和直觉 来判断。由于启发式搜索只有有限的信息,诸如当前Openft中状态的描述,要想预 测进一步搜索过程中状态空间的具体的行为很难办到。 一个启发式搜索可能得到 一个次最佳解 , 也可能一无所获。 这是启发式搜索固有的局限性。 这种局限性不 可能由所谓更好的启发式策略或更有效的搜索算法来消除。启发式策略及算法设计一直是人工智能的核心问题。博奕和定理证明是两 个最古老的应用 : 二者都需要启发式知识来剪枝以减少状态空间。 显然, 检查数 学领域中每一步推理或棋盘上每一步可能的移动是不可行的。 启发式搜索常常仅 是实践中的解答。近来, 专家系统的
4、研究把启发式策略作为问题求解的一个重要部分。当一 个专家解决问题时 , 他检查所获取的信息并作出决定。实际上 , 专家用来解决 问题的 "拇指法则 "很大程度上是启发式的。 这些启发性知识被专家系统的设计 者提取出来并形成规则。通常启发式算法由两部分组成 : 启发方法和使用该方法搜索状态空间的算 法。本章先介绍最好优先搜索的算法 , 再讨论启发式算法的设计和评估。在一字棋游戏中 (图 4.5), 穷尽搜索的组合数很大。第一步移动共有九种 移法,每一种又有八种对应走法依次类推,这个问题在穷尽搜索策略下需 考虑 9! 个状态。根据对称性可以减少搜索空间的数目。 棋盘上很多构造是
5、等价的。 譬如, 第 一步实际上只有三种移法 , 角、边的中央以及网络正中。 在状态空间的第二层上 , 由对称性可进一步减少到12X 7!种。在图5.1中可见到该状态空间比最初的状 态空间要小 , 但它在扩展过程中还要继续分解。然而, 一个简单的启发式策略几乎可以整个地消除复杂的搜索过程。 首先, 将棋子移到棋盘上X有最多的赢线的点。最初的三种状态显示在图 5.2中。若 两种状态有相等的赢的机率 , 取其中的第一个。 这样的话 , 可设计一种算法 (完全 实现启发式搜索),它选择并移到具有最高启发值的状态。在这种情况下,X占 椐网络的中间点 , 其它的各种状态都不再考虑 , 它们的延伸状态同时
6、也给消除了。如图 5.3 所示三分之二的状态空间就这样给剪枝了。第一步走完后 , 对方只能有两种走法 ( 见图 5.3) 。无论选择哪种走法 , 我方 均可以通过启发式搜索选择下一步可能的走法。 在搜索过程中 , 每一步只需估价 一下单个节点的子结点 ; 不需要强力搜索。图 5.3 显示了游戏前三步简化了的 搜索过程。每种状态都标记了它的启发值。要精确地计算待检查的状态的数目比较难 , 但可以大致计算它的上限。一 盘棋最多走九步,每步的下一步平均有四、五种走法。这样大约就是4.5 X 9,近 40 种状态 , 比 9! 改善了很多。5.1 启发信息和估计函数人工智能的核心课题是问题求解。 所谓
7、"问题求解 "就是在广义图中寻找一条 从初始状态出发 , 到达目标状态的解树。 例如旅行问题是解决从出发点到达目的 地的路线和工具问题 ; 机器人装配机器 , 就是给出把一堆零件变成一台机器的 一系列操作 ; 定理证明就是寻找一条从前提条件到达结论的通路等等。在实际解决一个具体问题时 , 人们常常把一个具有复杂联系的实际问题抽 象化 , 保留某些主要因素 , 忽略掉大量次要因素 , 从而将这个实际问题转化成 具有明确结构的有限状态空间问题 , 这个空间中的状态和变化规律都是已知的 有限集合 , 因此可以找到一个求解该问题的算法。然而, 在智能活动中使用最多的不是具有完备性的
8、算法 , 而是不一定完备 的启发式方法。其原因有二 :首先, 大多数情况下 , 智能系统不知道与实际问题有关的全部信息 , 因而 无法知道该问题的全部状态空间 , 不可能用一套算法来求解其中的所有问题 , 这样就只能依靠部分状态空间和一些特殊的经验性规则来求解其中的部分问题。其次 , 有些问题在理论上存在求解算法 , 但是在工程实践中 , 这些算法不 是效率太低 , 就是根本无法实现 , 为了提高解题的效率 , 不得不放弃使用这些 算法 , 而求助于一些经验性的启发式规则。例如在博弈问题中 , 计算机为了保证最后胜利 , 可以将所有可能的走法都 试一遍 , 然后选择最佳走步。 这样的算法是可以
9、找到的 , 但计算所需的时空代价 十分惊人。就可能有的棋局数讲 , 一字棋是 9!=3.6 X 105, 西洋跳棋是 1078, 国际象棋是 10120, 围棋是 10761。假设每步可能选择一种棋局 , 用极限并行速 度(10-104 年/ 步)计算, 国际象棋的算法也得 1016 年即 1 亿亿年才可以算完 , 而我们已知的宇宙史才 100 亿年!由此看来 , 启发式的问题求解 , 不仅在实践上是需要的 , 而且在理论上也 是必不可少的。对问题空间进行搜索时 , 提高搜索效率需要有和被解问题的解有关的大量 控制性知识作为搜索的辅助性策略。 有两种极端的情况 : 一种是没有任何这种控 制性知
10、识作为搜索的依据 , 因而搜索的每一步完全是随意的 , 如随机搜索 ; 另 一种是有充分控制性知识作为依据 , 因而搜索的每步选择都是正确的 , 这种搜 索叫最佳搜索。一般情况是介于二者之间 , 这些控制性信息反映在估价函数之 中。估价函数的任务就是估计待搜索结点的重要程度 , 给它们排定次序。估价 函数f(x)可以是任意一种函数,如有的定义它是结点x处于最佳路径上的概率, 或是x结点和目标结点之间的距离,或是x格局的得分等等。一般来说,估价一 个结点的价值 , 必须综合考虑两方面的因素 : 已经付出的代价和将要付出的代 价。在此 , 我们把估价函数 f(n) 定义为从初始结点经过 n 结点到
11、达目标结点的最 小代价路径的代价估计值 , 它的一般形式是 : f(n)=g(n)+h(n) 其中g(n)是从初始结点到n的实际代价,h(n)是从n到目标结点的最佳路径 的估计代价,主要是h(n)体现了搜索的启发信息。因为实际代价g(n)可以根据生 成的搜索树实际计算出来 , 而估计代价 h(n) 却依赖于某种经验估计 , 它来源于 我们对问题的解的某些特性的认识 , 这些特性可以帮助我们更快地找到问题的 解。一般地,在f(n)中,g(n)的比重越大,越倾向于广度优先搜索方式;h(n) 的比重越大 , 越倾向于深度优先搜索方式。g(n) 的作用一般是不可忽略的 , 因为它代表了从初始结点经过
12、n 到达目标 结点的总代价估值中实际已付出的那一部分。 保持g(n)项就保持了搜索的广度优 先趋势 , 这有利于搜索的完备性 , 但影响搜索的效率。在特殊情况下 , 如果只 希望找到达到目标结点的路径而不关心已付出的代价,则g(n)的作用可以忽略。 另外, h(n)> >g(n) 时, 也可以忽略 g(n), 这时有 f(n)=h(n), 这有利于搜索的效 率, 但影响搜索的完备性。给定一个问题后 , 根据问题的特性和解的特性 , 可以有多种方法定义估价 函数, 用不同的估价函数指导搜索 , 其效果可以相差很远。因此 , 必须尽可能选 择最能体现问题特性的 , 最佳的估价函数。5.
13、2 启发式搜索算法5.2.1 局部择优搜索法 ( 瞎子爬山法 ) 实现启发式搜索最简单的方法是瞎子爬山法 (hill climbing) 。 瞎子爬山法 在搜索过程中扩展当前结点并估价它的子结点。 最优的子结点被选择并进一步扩 展; 该子结点的兄弟结点和父结点都不再保留。 当搜索达到一种状态 , 该状态比 它的所有子结点都要好,则搜索停止。瞎子爬山法可以这样理解一一一个盲人急 切地想登上山顶 , 他总是沿着最陡的山路向上爬 , 直到再不能找到新的路径。 瞎 子爬山法有这样一个缺陷 : 一个错误的启发知识可能导致搜索无法沿着正确的 路径前进 , 从而增加了搜索的深度 , 甚至是无穷尽地搜索。 由
14、于瞎子爬山法不保 存所走过的结点信息 , 故瞎子爬山算法无法修正错误的路径。瞎子爬山法还可能在一个局部的最佳点上停止。当搜索到一个结点 , 它的 估计代价比任一个子结点都要小 , 则算法结束。如果此时并不是目标状态 , 而只 是一个局部最优结点 , 则该算法就不能得到目标解。因此 , 在一个限定的环境 下, 瞎子爬山法可能会极大地提高搜索效率 , 但是对于整个搜索空间 , 就有可 能无法得到最佳解。 重排九宫游戏就是一个突出的例子。 为了将一个特定的格局 移到它的目标位置上 , 常常需要移动已经在其目标位置上的将牌。 这对于完成拼 图是必要的 , 但它显然暂时恶化了拼板上的状态。 由于&quo
15、t;更好"并不是"最好", 瞎 子爬山法无法区别局部和全局最优解。 处理这个问题时有许多种方法 , 譬如随时 地修正估价函数来突破局部最优的限制。 但是总的来说 , 没有一种方法能保证瞎 子爬山法的最佳效率。下面介绍一个瞎子爬山法的例子一一跳棋程序。在人工智能中,Samue的跳棋程序最早应用该方法。在跳棋程序中,不仅运用了启发式搜索 , 还实现了简单的学习功能。跳棋程序中根据几个不同启发值的总和来估算棋局的状态 : L aixii其中 xi 是棋局的一系列特征 , 如残局优势、残局棋子力量分布 , 中心点位置的控制等。这些Xi的系数由它在整个估值中所处的重要性来确
16、定。也就是说,如果残局优势比控制中心点重要 , 则残局优势的系数要大。该程序将搜索空间扩展到一定局数并根据多项式估值函数估算该局中所有 状态值。根据 5.4.2 节介绍的极大极小法 , 程序可倒推出图中所有状态的估值。 游戏者根据结点的最佳状态走棋 ; 对手走棋后 , 根据新的棋局状态 , 整个过程 将再来一遍。若多项式估值函数导向一系列不能取胜的移动 , 程序将调整其系数以提高 能力。具有较大系数的因素由于在输棋原因中占很大比重 , 它的系数将减小 , 而 较小的系数将增 大以提高相关因素的影响力。 如果取胜则情况相反。 通过与人 或其自身的不同版本对抗 , 程序不断训练学习。可以看出 ,
17、跳棋游戏在学习过程中采用的是瞎子爬山法 , 通过对多项式估 值函数的局部的改进来提高自身的性能。 该程序能不断改进到水平很高为止。 然 而, 由于算法依靠瞎子爬山法 , 它不可避免地具有某些限制。 例如, 由于采用的 不是全局的策略 , 程序容易被对手利用某种启发策略导向陷阱。同样, 程序的自学习功能容易被对手的随手棋所迷惑 ; 例如, 老对手灵活地采用多种策略 , 或 故意乱下棋 , 这就会使多项式估值函数的系数随意性很大 , 从而全面降低了程 序的能力。上例表明 , 尽管瞎子爬山法有其局限性 , 但是若估价函数选取得当并能够 避免局部最优解和无穷搜索时 , 它就会充分发挥搜索的高效率。 总
18、之, 启发式搜 索需要一个具有很多启发信息的算法 , 而最好优先搜索就提供了这一算法。5.2.2 最好优先搜索法 ( 有序搜索法 ) 和第四章中所提到的深度优先及广度优先搜索算法一样 , 最好优先搜索算 法也使用了两张表来记录结点信息:在Oper表中保留所有已生成而未考察的结 点;在Closed表中记录已访问过的结点。算法中有一步是根据某些启发信息,按 结点距离目标状态的长度大小重排 Oper表中的结点这样。循环中的每一步只考虑 Oper表中状态最好的结点,这就是最好优先搜索算法,又称为有序搜索法。其数 据结构(Open表)既不同于广度优先使用的队(先进先出),也不同于深度优先使 用的栈(后进
19、先出 ) , 而是一个按结点的启发估计函数值的大小为序排列的一个 表, 有时也称为 "优先队"。进入优先队的结点不是简单地排在队尾 (或队首), 而 是根据其估值的大小插入队中合适的位置 , 每次从队中优先取出估值最小的结点加以扩展。最好优先搜索的算法描述如下 :PROCEDURE BEST-FIRST-SEARCH INITIALIZE:OPEN=START;CLOSED= ;WHILE OPE期DOBEGINREMOVE THE NEXT STATE FROM OPEN, CALL IT X;IF X IS A GOAL THEN RETURN THE SOLUTION
20、 PATH THAT LED TO X; PROCESS X,GENERATING ALL ITS CHILDREN;FOR EACH CHILD OF XDO CASETHE CHILD IS NOT ALREADY ON OPEN OR CLOSED:BEGINASSIGN A HEURISTIC VALUE TO THE CHILD STATE;ADD THE CHILD STATE TO OPEN;END;THE CHILD IS ALREADY ON OPEN:IF THE CHILD WAS REACHED ALONG A SHORTER PATH THANTHE STATE CU
21、RRENLTY ON OPENTHEN GIVE THE STATE ON OPEN THIS SHORTER PATH VALUETHE CHILD IS ALREADY ON CLOSED:IF THE CHILD WAS REACHED ALONG A SHORTER PATH THANTHE STATE CURRENLTY ON CLOSEDTHENBEGINGIVE THE STATE ON CLOSED THIS SHORTER PATH VALUE;MOVE THIS STATE FROM CLOSED TO OPENENDEND;PUT X ON CLOSED;RE-ORDER
22、 STATES ON OPEN ACCORDING TO HEURISTIC MERIT (BEST VALUES FIRST)END;RETURN(FAILURE); %OPEN IS EXHAUSTEDEND.在每一次重复中,最好优先搜索算法从Operft中取出第一个元素,如果该 元素满足目标条件 , 则算法返回到达该元素的搜索路径。 在这里 , 每个结点都保 留父结点的信息 , 以保证返回完整的搜索路径。若OpenS的第一个元素不是目标结点,则算法应用相应的规则进行一系列 操作来产生它的子结点。如果子结点的状态已在Open(或Closed表)中,则算法保 证新的状态记录两个求解路径中花费
23、小的一个 , 不保留重复的状态。这样 , 当 Oper表(或Closed表)中的结点再一次被发现时,通过刷新它的祖先结点的历史 记录, 算法就极有可能得到到达目标结点的更短的路径。接着,最好优先搜索法估算Ope表中每个结点的状态的启发值,按照值的 大小重新排序 , 将值最小的状态放在表头。图 5.4 是一个层次式状态空间 , 有些结点旁边标上了相应的启发值。 标上 值的那些状态都是在最好优先搜索中实际生成的。 在这张图中 , 启发搜索算法扩 展的状态都已显示 ; 算法无需搜索所有的状态空间。 最好优先搜索算法的目标是 尽可能地减小搜索空间而得到解 , 启发信息给得越多 , 处理的状态就越少。下
24、面给出了这张图的最好优先搜索算法的运行过程。假定 P是目标状态,则 到P的路径上的结点状态有较低的启发值。在这里,启发信息难免会有错误;状 态Ot匕P的值小而先被检查。然而,不象瞎子爬山法,该算法本身有纠错功能,能 从此状态返回并找到正确的目标状态。1. Open=A5; Closed= 2. 估算 A5; Ope n=B4,C4,D6; Closed=A53. 估算 B4; Ope n=C4,E5,F5,D6; Closed=B4,A54. 估算 C4; Open=H3,G4,E5,F5,D6; Closed=C4,B4,A55. 估算 H3; Open=O2,P3,G4,E5,F5,D6;
25、 Closed=H3,C4,B4,A56. 估算 O2; Open=P3,G4,E5,F5,D6; Closed=O2,H3,C4,B4,A57. 估算 P3; 已得到解 !图5.5是算法执行了五次循环后的状态空间图。Oper表和Closed表中的状 态以不同的亮度显示。Oper表中记录搜索的当前结点,Closed表中保存已考察过 的状态。最好优先搜索算法总是从Oper表中选取最"好"的状态进行扩展。但是,由 于启发信息有时可能出错,故算法并不丢弃其它的状态而把它们保留在 Oper表 中。当某一个启发信息将搜索导向错误路径时,算法可以从Oper表中检索先前产 生的 &quo
26、t; 次最好 " 状态, 并且将考察方向转向空间的另一部分上。如图 5.4, 当算 法发现状态B的子结点有很差的启发值时,搜索转移到C,但B的子结点都保留 在Oper表中,以防算法在未来的某一步再一次转向它们。在最好优先搜索算法 中 , 就象第四章中的算法一样 , 当某一路径无法到达目标解时 , 可使搜索转到 另一条路径上。5.2.3 启发估计函数的实现 不同的启发策略对解决九宫问题有不同的影响。图 5.6 显示了九宫问题的 起始状态、目标状态以及搜索过程中产生的前三个状态。最简单的启发策略是计算每种格局下与目标结点的格局相比时位置不符的 将牌数目。从感觉上来说 , 这种策略很有效
27、, 因为在其它条件相同的情况下 , 位 置不符将牌数目越少 , 它看上去和最终目标越近 , 因而是检验的下一个状态。但是 , 这种策略并没有充分利用所能获得的信息 , 它没有考虑将牌所需移 动的距离。一个 " 较好" 的启发策略是将牌移到目标位置上时所需移动距离的总和 相加作为启发值。这两种策略都没有考虑将牌逆转时的情况 , 也就是 , 如果两块将牌相邻但 是和目标格局相比位置相反 , 这至少需要移动两次才能将它们移到正确的位置 上, 将这一点加以考虑的启发策略对每一对逆转将牌乘以一个小倍数 (如 2)。图 5.8 显示的就是将这三种策略运用到图 5.6 的三个子状态情况下
28、所得到的结果。在图 5.8 中, " 距离总和 " 策略看上去比仅仅计算位置不符将牌数目的策略 提供了一个更精确的估算。 而且, 由于在这些状态中 , 没有直接给出逆位数 , 故 都给予估值。第四种策略克服了仅计算将牌逆转数目策略的局限 , 它将位置不符 将牌数目总和与 2 倍将牌逆转数目相加。这个例子说明 , 设计一个好的启发策略具有相当的难度。 设计算法的目标就 是利用有限的信息作出一个明智的选择。 上述策略都忽略了一些重要的信息 , 需 加以改进。好的启发策略的设计是一个经验问题 , 判断和直觉是很重要的因素 , 但是衡量的最终尺度则是具体应用时的效果。由于所有的启发
29、策略都可能出错 , 每一种搜索算法都可能导向错误的路 径, 但是在深度优先搜索中 , 可用深度计数探查无效路径来解决这个问题。 这个 思想也可运用到启发式搜索中。 如果两种状态具有相等的启发值 , 通常先考察离 根较近的那个状态。 这个状态极有可能就处在到达目标状态的最佳路径上。 可用 一个深度计数来记录从起始状态到其子孙状态的距离。 计数起始值为 0, 每搜索 一层计数值加 1。这个值可加到启发值上 , 层数越浅的状态越优先。这样, 就得到了估计函数 f, 它由两个因素所组成 :f(n)=g(n)+h(n)其中g(n)是状态n到达起始状态的路径的实际长度,h(n)是状态n到目标状态的 最佳路
30、径的启发值。在九宫问题中,可令h(n)为位置不符的将牌数目。若将这个估计函数值运 用到图5.6的子状态中,它们的f值分别是6,4,6(见图5.9)。各个状态的 f(n) 值 这里 f(n)=g(n)+h(n)g( n)=从n到初始状态的实际长度h(n)= 位置不符的将牌数目图5.9九宫图的估计函数f值在图5.10中,使用上面所定义的f函数得到一个完整的搜索树。每种状态都以一个字母及它的估计函数值f来标记。每种状态头部的数字显示该状态从 Open 表中取出时的顺序。有些状态没有数字标记 , 这是因为当算法结束时 , 这 些状态仍在OpenS中。图 5.10 启发式搜索产生的九宫图状态空间产生图 5.10 的一系列过程如下 :1.open=a4;closed=2.open=c4,b6,d6;closed=a43.open=e5,f5,g6,b6,d6;closed=a4,c44.open=f5,h6,g6,b6,d6,i7;closed=a4,c4,e55.open=j5,h6,g6,b6,d6,k7,i7; closed=a4,c4,e5,f56.open=l5,h6,g6,b6,d6,k7,i7;closed=a4,c4,e5,f5,j57.open=m5,h6,g6,b6,d6,n7,k7,i7; clo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- NBT 10973-2022 太阳能热发电厂发电量及厂用电率计算导则
- 华融资产校招面试题及答案
- 公务员面试苦面试题及答案
- 恒丰银行招聘面试题及答案
- 海南航空秋招试题及答案
- 公务员面试经典题型面试题及答案
- 国家开发银行招聘题库及答案
- 公务员面试急转弯题面试题及答案
- 管家服务招聘真题及答案
- 公务员考试实词试题及答案
- 2025年客运从业资格证考试题库及答案
- 爆破施工技术要求方案
- 2026届山东省济南市章丘四中化学高一上期中联考试题含解析
- 门窗安装工程施工方案(全面)
- 室内装饰工程施工组织设计范例
- 土壤肥料学知识点及答案
- 机器挖地安全合同协议
- 高中语文教师新课标培训心得分享
- 河北大学《宪法学》2024-2025学年期末试卷(A卷)
- 老年人听力障碍
- 《成都市智能建造人工智能(AI)应用指南(2025版)》
评论
0/150
提交评论