自动控制网—学习自动控制技术电气自动化技术从这里开始!

有序搜索

时间:2015-08-26 08:57来源:www.eadianqi.com 编辑:自动控制网
1.定义 用估价函数f来排列GRAPHSEARCH第8步中OPEN表上的节点。应用某个算法(例如等代价算法)选择OPEN表上具有最小f值的节点作为下一个要扩展的节点,这种搜索方法叫做有序搜索(ordered search)或最佳优先搜索(best-first search)。 尼尔逊(Nilsson)曾提出一个

1.定义
    用估价函数f来排列GRAPHSEARCH第8步中OPEN表上的节点。应用某个算法(例如等代价算法)选择OPEN表上具有最小f值的节点作为下一个要扩展的节点,这种搜索方法叫做有序搜索(ordered search)或最佳优先搜索(best-first search)。
    尼尔逊(Nilsson)曾提出一个有序搜索的基本算法。估价函数f是这样确定的:一个节点的希望程序越大,其f值就越小。被选为扩展的节点,是估价函数最小的节点。 自动控制网www.eadianqi.com版权所有

2.实质
    选择OPEN表上具有最小f值的节点作为下一个要扩展的节点,即总是选择最有希望的节点作为下一个要扩展的节点。 本文来自www.eadianqi.com

3.有序状态空间搜索算法
    (1) 把起始节点S放到OPEN表中,计算f(S)并把其值与节点S联系起来。
    (2) 如果OPEN是个空表,则失败退出,无解。
    (3) 从OPEN表中选择一个f值最小的节点i。若有几个节点合格,当其中有一个为目标节点时,则选择此目标节点,否则就选择其中任一个节点作为节点i。
    (4) 把节点i从OPEN表中移出,并把它放入CLOSED的扩展节点表中。
    (5) 如果i是个目标节点,则成功退出,求得一个解。
    (6) 扩展节点i,生成其全部后继节点。对于i的每一个后继节点j:
        (a) 计算f(j);
        (b) 若j既不在OPEN表,又不在CLOSED表中,则将其加入OPEN表,并按f值排序,提供指向i的指针;
        (c) 若j已在OPEN或CLOSED表中,则比较新的f(j)和以前计算过的值,若新值较小,用新值取代旧值,将j的父节点由原来的改为i,若j在CLOSED中将其移回OPEN表。 自动控制网www.eadianqi.com版权所有
    (7) 转向(2),即GO TO(2)。 本文来自www.eadianqi.com

4.有序搜索方法分析
    宽度优先搜索、等代价搜索和深度优先搜索统统是有序搜索技术的特例。对于宽度优先搜索,选择f(i)作为节点i的深度。对于等代价搜索,f(i)是从起始节点至节点i这段路径的代价。f的选择直接影响了有序搜索的效率,其选择涉及两个方面的内容:即时间和空间之间的折衷,以及能否保证有一个最优的解或任意解。 本文来自www.eadianqi.com

5.例
    采用了简单的估价函数
        f(n)=d(n)+W(n)。
    其中:d(n)是搜索树中节点n的深度;W(n)用来计算对应于节点n的数据库中错放的棋子个数。因此,起始节点棋局的f值等于0+4=4。

本文来自www.eadianqi.com

本文已影响