您好,欢迎访问三七文档
1.4启发式图搜索1.启发式搜索•定义:为减小搜索范围而需要利用某些已知的、有关具体问题领域的特性信息。此种信息叫做启发信息。利用启发信息的搜索方法叫做启发式搜索方法。•特点:重排OPEN表,选择最有希望的节点加以扩展•种类:最佳优先搜索、A*算法等启发式搜索策略•有关具体问题领域的信息常常可以用来简化搜索。一个比较灵活(但代价也较大)的利用启发信息的方法是应用某些准则来重新排列每一步OPEN表中所有节点的顺序。然后,搜索就可能沿着某个被认为是最有希望的边缘区段向外扩展。应用这种排序过程,需要某些估算节点“希望”的量度,这种量度叫做估价函数(evalutionfunction)•估价函数为获得某些节点“希望”的启发信息,提供一个评定侯选扩展节点的方法,以便确定哪个节点最有可能在通向目标的最佳路径上。f(n)——表示节点n的估价函数值•建立估价函数的一般方法:试图确定一个处在最佳路径上的节点的概率;提出任意节点与目标集之间的距离量度或差别量度;或者在棋盘式的博弈和难题中根据棋局的某些特点来决定棋局的得分数。这些特点被认为与向目标节点前进一步的希望程度有关。•应用节点“希望”程度(估价函数值)重排OPEN表。2.登山法和最佳优先搜索•登山法的引入瞎子在山上某点,想要爬到山顶,怎么办?从立足处用明杖向前一试,觉得高些,就向前一步,如果前面不高,向左一试,高就向左一步,不高再试后面,高就退一步,不高再试右面,高就向右走一步,四面都不高,就原地不动.总之,高了就走一步,就这样一步一步地走,就走上了山顶。这个向各方向的测试“步”,就是“登山法”的估价函数f(n)。登山法算法步骤:①设定初始节点n;②如果n是目标,则成功退出;③扩展n,得到其子节点集合;④从该集合中选取f(n)为最小的节点n’;⑤将n’设为n,返回第②步。最佳优先搜索算法•是“登山法”的推广,但它是对OPEN表中所有节点的f(n)进行比较,按从小到大的顺序重排OPEN表。•其算法效率类似于纵向搜索算法,但使用了与问题特性相关的估价函数来确定下一步待扩展的节点,因此是一种启发式搜索方法。开始把S放入OPEN表,计算估价函数f(s)OPEN表为空表?把OPEN表中的第一个节点n放入CLOSED表n为目标节点吗?扩展n,计算所有子节点的估价函数值,并提供它们返回节点n的指针。失败成功最佳优先搜索算法框图是否是否把子节点送入OPEN表,并对其中的所有节点按估价函数值由小到大重排。迷宫问题如下,F是入口,B是出口,试采用最佳优先搜索算法进行求解。举例:迷宫问题0123x123yFGHECADB22241111解:估价函数f(n)采用每个节点与目标节点在坐标系上的距离来表示。例如,E点与目标节点B之间的空间距离是2+2=4,两个2分别是E与B在x轴及y轴上的距离。注:每个节点小括号内的数值表示该节点到目标的空间距离,即该点的估价函数值。搜索得到的路径如黄线所示。F(6)G(5)H(3)E(4)A(2)B(0)12345C(3)6•举例:八数码魔方(8-puzzleproblem)12384567(目标状态)12384567(初始状态)57①④⑤⑥③123845671238456712384567(3)(5)(5)②123845671238456712384567(4)(3)(3)1238456712384567(2)(4)1238456712384567(3)(4)12384567(1)8132456712384567(0)(2)八数码魔方的最佳优先搜索树123846(4)75⑦搜索得到的路径如黄线所示•本题采用了简单的估价函数f(n)=W(n)其中:W(n)用来计算对应于节点n的数据库中错放的棋子个数。因此,初始节点棋局的f(n)值等于4。12384567•第②步有三种情况,我们选择其中f(n)最小的:•其它依次类推.最后用了7步得出了结果.123845671238456712384567(3)(5)(5)3.A算法•最佳优先算法有时无法得到最优解,因为它的估价函数f的选取时,忽略了从初始节点到目前节点的代价值。所以,可考虑每个节点n的估价函数f(n)分为两个分量:从起始节点到节点n的代价g(n)以及从节点n到达目标节点代价的估算值h(n)。f(n)=g(n)+h(n)•f(n)——节点n的估价函数;g(n)——评价函数,从初始节点S到n节点的实际代价;h(n)——启发函数,从n到目标节点Sg最佳路径的估计代价。•这里h(n)体现了搜索的启发信息,因为g(n)是已知的。如果说详细点,g(n)代表了搜索的宽度优先趋势。但是当h(n)g(n)时,可以省略g(n),而提高效率。A算法的引入:g(n)的计算方法:•g(n)就是在搜索树中从S到n这段路径的代价,这一代价可以由从n到S寻找指针时,把所遇到的各段弧线的代价加起来给出(这条路径就是到目前为止用搜索算法找到的从S到n的最小代价路径)。h(n)的计算方法:•h(n)依赖于有关问题的领域的启发信息。这种信息可能与八数码魔方问题中的函数W(n)所用的那种信息相似。把h(n)叫做启发函数。•举例:八数码魔方(8-puzzleproblem)12384567(目标状态)12384567(初始状态)57①④⑤⑥③123845671238456712384567(1+3=4)(1+5=6)(1+5=6)②123845671238456712384567(2+4=6)(2+3=5)(2+3=5)1238456712384567(3+2=5)(3+4=7)1238456712384567(3+3=6)(3+4=7)12384567(4+1=5)8132456712384567(5+0=5)(5+2=7)八数码魔方的A算法搜索树123846(0+4=4)75⑦搜索得到的路径如黄线所示•本题采用的估价函数为:f(n)=g(n)+W(n)其中:W(n)用来计算对应于节点n的数据库中错放的棋子个数;g(n)为从起点到n的代价值。因此,第二层的棋局的f(n)=1+5=6。12384567g(n)h(n)4.最佳图搜索算法A*(A*算法)•在A算法中,如果满足条件:h(n)≤h*(n)则A算法称为A*算法。对节点n定义f*(n)=g*(n)+h*(n),表示从S开始通过节点n的一条最佳路径的代价。估价函数f定义为:f(n)=g(n)+h(n)——g是g*的估计,h是h*的估计定义1在图搜索过程中,如果重排OPEN表是依据f(x)=g(x)+h(x)进行的,则称该过程为A算法。定义2在A算法中,如果对所有的x存在h(x)≤h*(x),则称h(x)为h*(x)的下界,它表示某种偏于保守的估计。定义3采用h*(x)的下界h(x)为启发函数的A算法,称为A*算法。A*条件举例•8数码问题–h1(n)=“不在位”的将牌数–h2(n)=将牌“不在位”的距离和2831647512345768将牌1:1将牌2:1将牌6:1将牌8:257①④⑤⑥③123845671238456712384567(1+4=5)(1+6=7)(1+6=7)②123845671238456712384567(2+5=7)(2+5=7)(2+3=5)1238456712384567(3+2=5)(3+4=7)12384567(4+1=5)8132456712384567(5+0=5)(5+2=7)123846(0+5=5)7⑦八数码魔方的A*算法搜索树
本文标题:启发式图搜索
链接地址:https://www.777doc.com/doc-4647037 .html