3.3-启发式搜索(2)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

人工智能 丁世飞
4
图搜索算法
(3) If mi已经在 已经在OPEN表中 则该节点一定有多个父节点 在这种情 表中,则该节点一定有多个父节点 表中 则该节点一定有多个父节点,在这种情 况下,计算当前的路径 值 并和原有路径的 值相比较: 并和原有路径的g值相比较 况下 计算当前的路径g值,并和原有路径的 值相比较 若前 计算当前的路径 者大于后者,则不做任何更改 如果前者小于后者 则将OPEN表 者大于后者 则不做任何更改;如果前者小于后者 则将 则不做任何更改 如果前者小于后者,则将 表 中该节点的f值更改为刚计算的 值 返回指针更改为 返回指针更改为n。 中该节点的 值更改为刚计算的F值,返回指针更改为 。 值更改为刚计算的 (4) If mi已经存在于 已经存在于CLOSED表中 则该节点一样也有多个父节点 表中,则该节点一样也有多个父节点 表中 则该节点一样也有多个父节点. 在这种情况下,同样计算当前的路径 值和原来路径的 在这种情况下 同样计算当前的路径g值和原来路径的 值. 如 同样计算当前的路径 值和原来路径的g值 果当前的g值小于原来的 值,则将表中该节点的 、f值及返回 则将表中该节点的g、 值及返回 果当前的 值小于原来的g值 则将表中该节点的 值小于原来的 指针进行类似(3)步的修改 并要考虑修改表中通过该节点的 指针进行类似 步的修改,并要考虑修改表中通过该节点的 步的修改 后继节点的g、 值及返回指针 值及返回指针。 后继节点的 、f值及返回指针。 (5) 按f值从小到大的次序 对OPEN表中的节点进行重新排序。 值从小到大的次序,对 表中的节点进行重新排序。 值从小到大的次序 表中的节点进行重新排序 End If; End Else; End While; End.
假定g(n)表示搜索树中搜索的深度,则根 据图搜索策略得下图的搜索空间。
人工智能 丁世飞 10
水壶问题的搜索过程
在第0步,节 点O可以得到 g+h=10
在第1步,得到两 个节点M和N,其 估价函数值都为 1+8=9,因此可以 任选一个节点扩展。
人工智能 丁世飞
11
假定选择了节点M,在第2步扩展M得到两个后继了点P和R,对于P有 2+4=6,对于R有2+10=12。现在,在节点P、R、N中,节点P具有最小的 估价函数值,所以选择节点P扩展。 在第3步,可以得到节点S,其中3+4=7。现在,在节点S、R、N中,节点 S的估价函数值最小,所以下一步就会选择S节点扩展。该过程一直进行 下去,直到到达目标节点。
节点1扩展之前 节点 扩展之前
节点1扩展之后 节点 扩展之后
人工智能 丁世飞
7
当节点1扩展时,产生节点 。而节点2是 当节点 扩展时,产生节点2。而节点 是CLOSED 扩展时 表中的节点,节点2的新 的新g(2)值为 (设相邻两节点 值为2( 表中的节点,节点 的新 值为 之间的代价均为1),而原来g(2) 值为 ,故将节 ),而原来 值为4, 之间的代价均为 ),而原来 的指针指向节点1,将原来指向节点3的指针断 点2的指针指向节点 ,将原来指向节点 的指针断 的指针指向节点 开。
同时要考虑修改节点 2的后继节点 的返回 的后继节点4的返回 的后继节点 指针和g 的值 的值, 指针和 (4)的值,将 节点4指向节点 指向节点2, 节点 指向节点 ,并 把原来指向节点6的 把原来指向节点 的 指针断开。 指针断开。
节点1扩展之前 节点 扩展之前 节点1扩展之后 节点 扩展之后
人工智能 丁世飞
人工智能 丁世飞 16
A*算法 算法
把估价函数f 和 相比较: 把估价函数 (n)和 f *(n)相比较: 相比较
g (n)是对 g*(n)的估计。 的估计。 是对 的估计 h (n)是对 (n)的估计。 是对h* 的估计 的估计。 是对
在这两个估计中,尽管 容易计算, 在这两个估计中,尽管g (n)容易计算,但它不 容易计算 一定就是从起始节点S 到节点n 一定就是从起始节点 0到节点 的真正的最短 路径的代价,很可能从初始节点S 到节点n 路径的代价,很可能从初始节点 0到节点 的 真正最短路径还没有找到,所以一般都有: 真正最短路径还没有找到,所以一般都有: g(n)≥g* (n)。 。
人工智能 丁世飞 2
通用图搜索算法( 算法 算法) 3.3.3 通用图搜索算法(A算法)
这样,可以给出两个数据结构 这样,可以给出两个数据结构OPEN和CLOSED 和 分别存放了Open 节点和 节点和Closed节点。 节点。 表,分别存放了 节点 节点x 总的费用函数 (x) 是g (x) 和h (x) 之和。 之和。 节点 总的费用函数f 可以比较容易地得到, 生成费用 g (x) 可以比较容易地得到,如: 如果节 是从初始节点经过m步得到 步得到, 点 x 是从初始节点经过 步得到,则g (x) 应该和 m 成正比(或者就是 )。 成正比(或者就是m)。 如何计算h(x)呢? h (x) 只是一个预测值。 呢 只是一个预测值。 如何计算
Open节点:一个节点称为Open, Open节点:一个节点称为Open,如果该节点已 节点 Open 经生成,而且启发式函数值h(x)已经计算出来, 已经计算出来, 经生成,而且启发式函数值 已经计算出来 但是它没有扩展。这些节点也称为未考察节点 未考察节点。 但是它没有扩展。这些节点也称为未考察节点。 Closed节点 一个节点称为Closed 节点: Closed, Closed节点:一个节点称为Closed,如果该节 点已经扩展并生成了其子节点。Closed节点是 点已经扩展并生成了其子节点。Closed节点是 已经考察过的节点。 已经考察过的节点。
人工智能 丁世飞
14
初始:0+4
图:8数码问题搜索过程
人工智能 丁世飞 15
3.3.4 A*算法 .3.4 算法
在图搜索策略的基础上,给出 算法 算法。 在图搜索策略的基础上,给出A*算法。 定义评估函数 定义评估函数f *:f *(n) = g* (n)+h* (n) 评估函数 g* (n)为起始节点到节点 的最短路径的代价, 为起始节点到节点n的最短路径的代价 为起始节点到节点 的最短路径的代价, h* (n)是从节点 到目标节点的最短路径的代价。 是从节点n到目标节点的最短路径的代价 是从节点 到目标节点的最短路径的代价。 若有多个目标节点,则为其中最小的一个。 若有多个目标节点,则为其中最小的一个。 这样f 就是从起始节点出发通过节点n到达目 这样 * (n)就是从起始节点出发通过节点 到达目 就是从起始节点出发通过节点 标节点的最佳路径的总代价的估值。 标节点的最佳路径的总代价的估值。
人工智能
第3章 搜索策略
3.1 引言 3.2 盲目搜索 √3.3 启发式搜索(2) 启发式搜索(2)
人工ຫໍສະໝຸດ Baidu能 丁世飞 1
通用图搜索算法( 算法 算法) 3.3.3 通用图搜索算法(A算法)
图搜索算法只记录状态空间中那些被搜索 过的状态,它们组成一个搜索图 搜索图G 过的状态,它们组成一个搜索图G。 搜索图G由两种节点组成: 搜索图G由两种节点组成:
水壶问题的搜索过程
人工智能 丁世飞 12
图:水壶问题的搜索树
人工智能 丁世飞
13
例2 8数码问题 数码问题
对于8数码问题,设初始状态和目标状态如下图所示: 对于 数码问题,设初始状态和目标状态如下图所示: 数码问题
2 S0= 1 7 8 6 3 4 5 Sg= 1 8 7 6 2 3 4 5
若用d 表示节点 在搜索树中的深度, 表示节点x在搜索树中的深度 表示节点x中不在 若用 (x)表示节点 在搜索树中的深度,w (x)表示节点 中不在 表示节点 目标状态中相应位置的数码个数,则根据f 目标状态中相应位置的数码个数,则根据 (x)=d (x)+w(x), , 画出八数码问题的搜索过程。 画出八数码问题的搜索过程。
人工智能 丁世飞
3
图搜索算法( 算法)(P78:算法3.8) 图搜索算法(A算法)(P78:算法3.8) 算法
Procedure Graph-Search Begin 建立一个只含有初始节点S 的搜索图 , 放入OPEN表;计算 0)=g(S0)+h(S0); 建立一个只含有初始节点 0的搜索图G,把S0放入 表 计算f(S 假定初始时CLOSED表为空。 表为空。 假定初始时 表为空 While OPEN 表不空 do Begin 表中取出f值最小的节点 第一节点),并放入 表中.假设该节点 从OPEN表中取出 值最小的节点 第一节点 并放入 表中取出 值最小的节点(第一节点 并放入CLOSED表中 假设该节点 表中 的编号为n。 的编号为 。 If n是目标 则停止 返回 并根据 的反向指针指出的从初始节点到 的路径。 是目标,则停止 返回n,并根据 的反向指针指出的从初始节点到n的路径 是目标 则停止;返回 并根据n的反向指针指出的从初始节点到 的路径。 Else do Begin (1) 生成 的子节点集合 i},把mI作为 的后继节点加入到 中,并计算 生成n的子节点集合 的子节点集合{m 把 作为n的后继节点加入到 的后继节点加入到G中 并计算 f(mi)。 。 (2) If mi未曾在 中出现过 即未曾在 未曾在G中出现过 即未曾在OPEN和CLOSED表中出现过 中出现过(即未曾在 表中出现过),then 将 和 表中出现过 它们配上刚计算过的f值 设置返回到 的指针,并把它们放入 设置返回到n的指针 并把它们放入OPEN表中。 表中。 它们配上刚计算过的 值,设置返回到 的指针 并把它们放入 表中
8
例1:水壶问题
给定4L和3L的水壶各一个,水壶上没有刻 度,可以向水壶中加水。如何在4L的壶中 准确地得到2L水?
这里:用(x,y)—4L壶里的水有xL,3L壶里的水 有yL,n表示搜索空间中的任一节点。 则给出下面的启发式函数:
人工智能 丁世飞
9
例1:水壶问题
h(n) = 2 =4 =8 =10 如果0< x < 4并且0< y < 3 如果0< x < 4或者0< y < 3 如果 x = 0并且 y = 3 或者 x =4 并且 y= 0 如果 x = 0 并且 y = 0 或者 x = 4并且 y = 3
人工智能 丁世飞 17
A*算法 算法
有了g*(n) 和h*(n) 的定义,如果对最好优先的 的定义,如果对最好优先的 有了 启发式搜索算法中的 中的g(n)和h(n)做如下的限制: 做如下的限制: 启发式搜索算法中的 和 做如下的限制
人工智能 丁世飞 5
图搜索算法说明
上述图搜索算法生成一个明确的图G(称为搜索图) 上述图搜索算法生成一个明确的图 (称为搜索图)和一个 G的子集 (称为搜索树),图G中的每一个节点也在树 上。 的子集T(称为搜索树), ),图 中的每一个节点也在树 中的每一个节点也在树T上 的子集 搜索树是由返回指针来确定的。 搜索树是由返回指针来确定的。 是由返回指针来确定的 G中的每一个节点(除了初始节点S0)都有一个指向 中一 中的每一个节点(除了初始节点 都有一个指向G中一 中的每一个节点 个父辈节点的指针。 个父辈节点的指针。该父辈节点就是树中那个节点的唯一父 辈节点。 辈节点。 算法中(3)、 步保证对每一个扩展的新节点 步保证对每一个扩展的新节点, 算法中 、(4)步保证对每一个扩展的新节点,其返回指针 的指向是已经产生的路径中代价最小的。 的指向是已经产生的路径中代价最小的。 这可用下图来说明。 这可用下图来说明。
人工智能 丁世飞 6
设搜索算法已生成如下图( 设搜索算法已生成如下图(a)所示的搜索图和搜索树(带 所示的搜索图和搜索树( 返回指针的部分)。 )。图中实心圆点表示在 返回指针的部分)。图中实心圆点表示在 CLOSED 表中的节 空心圆点表示在OPEN表中还未扩展的节点。 OPEN表中还未扩展的节点 点,空心圆点表示在OPEN表中还未扩展的节点。 下图( 下图(a)是扩展节点1之前的搜索图和搜索树,而(b)是 是扩展节点1之前的搜索图和搜索树, 扩展节点1之后的搜索图和搜索树。 扩展节点1之后的搜索图和搜索树。
相关文档
最新文档