人工智能第3章
(2)深度优先搜索所求得的解答路径不一定是最 短路径;
(3)深度界限得选择很重要,过大,可能会影响 搜索效率,过小,有可能求不到解。有界深度 优先搜索策略是不完备的。 例3.3,P74,图3.8
3.1.4 等代价搜索
定义
有些问题并不要求有应用算符序列 为最少的解,而是要求具有某些特性的 解。宽度优先搜索可被推广用来解决这 种寻找从起始状态至目标状态的具有最 小代价的路径问题,这种推广了的宽度 优先搜索算法叫做等代价搜索算法。
(6)扩展节点n,同时生成不是n的祖先的那些 后继节点的集合M。把M中的这些成员作为n 的后继节点加入图G中。
(7)对那些未曾在G中出现过的(既未曾在 OPEN表上或CLOSED表上出现过的)M成员 设置一个通向n的指针。把M的这些成员加进 OPEN表。对已经在OPEN表或CLOSED表上 的每一个M成员,确定是否需要更改通到n的 指针方向。对已在CLOSED表上的每个M成员, 确定是否需要更改图G中通向它的每个后继节 点的指针方向。
A
90
80
B
170 160 110
C
85 140 100
65
D
E
80
第3章 搜索原理
3.1 盲目搜索 3.2 启发式搜索 3.3 博弈树搜索 3.4 遗传算法 3.5 模拟退火算法
3.1 启发式搜索
启发信息是进行搜索技术所需要的一 些有关具体问题领域的特性的信息。
利用启发信息的搜索方法称为启发式 搜索或有信息搜索。 1、启发信息分类
宽度优先搜索(续)
宽度优先搜索算法(P71) 宽度优先搜索方法分析
(1)将OPEN表作为“先进先出”的队列进行操 作;
(2)宽度优先搜索方法能够保证在搜索树中找到 一条通向目标节点的最短路径(即宽度优先搜 索策略是完备的);
(3)搜索树提供了所有存在的路径; (4)盲目性较大,当目标节点较远时,将产生大
第3章 搜索原理
知识点 重难点 学习要求
知识点
盲目搜索 启发式搜索 博弈树搜索 遗传算法 模拟退火算法
重难点
宽度优先 深度优先 等代价搜索 有序搜索 A*算法 博弈树搜索
学习要求
重点掌握宽度优先和深度优先搜索算法 掌握等代价搜索算法 掌握启发式搜索相关知识 理解博弈树搜索相关技术 掌握遗传算法基本原理 理解模拟退火算法基本原理
度.
启发式搜索(续)
有序搜索的有效性直接取决于f的选 择,如果选择的f不合适,有序搜索就可 能失去一个最好的解甚至全部的解。
正确地选择估价函数对确定搜索结 果具有决定性地作用。使用不能识别某 些节点真实希望的估价函数会形成非最 小代价路径;而使用一个过多地估计了 全部节点希望地估价函数又会扩展过多 的节点。
用两个表分别存放已扩展节点和未扩展
节点,OPEN表存放未扩展节点, CLOSED表存放已扩展节点。两个表的 结构如下:
OPEN表: 节点
父节点
CLOSED表: 编号 节点 父节点
图搜索策略(续)
状态空间图的一般搜索算法:
(1)建立一个只含有起始节点S的搜索图G,把S 放到OPEN表中。
(2)建立CLOSED表,且置为空表。
量无用节点。
例3.2,P72,图3.5
3.1.3 深度优先搜索
定义
深度优先搜索也是一种盲目搜索策略,其 基本思想是:首先扩展最新产生的(即最深) 节点,即从初始节点S开始,在其后继节点中 选择一个节点,对其进行考察,若它不是目标 节点,则对该节点进行扩展,并再从它的后继 节点中选择一个节点进行考察。依次类推,一 直搜索下去,当到达某个既非目标节点又无法 继续扩展的节点时,才选择其兄弟节点进行考 察。
4、图搜索方法的几点分析
(1)对OPEN表进行排序(盲目或启发式搜索)。 (2)被选作扩展的节点为目标节点时,成功,回
溯,可找到路径。否则,失败终止情况下没有解 路径。
在利用状态空间搜索方法求解问题时,并不是将整个 问题的状态空间图全部输入计算机,而是只存入问题有 关的部分状态空间图,这部分是在搜索过程中生成的, 并且每前进一步,都要检查是否到达目标节点,这样就 可尽量减少生成与问题求解无关的状态,从而提高了解 题效率,节省了存储空间。
图搜索策略(续)
(8)按某一任意方式或按某个探试值,重 排OPEN表。
(9)转第(3)步。
举例说明:P68,例3.1
图搜索策略(续)
3、搜索图与搜索树
图搜索过程生成一个明确的图G(称为搜索图)和一
个G的子集T(称为搜索树),树T上的每个节点也在 图G中。
例:二阶Hanoi塔问题。状态空间图如下。
启发式搜索(续)
应用举例: (P78) 采用简单的估价函数f(n)=d(n)+w(n), 其中,d(n)是搜索树中节点n的深度; w(n)用来计算节点n与目标状态节点Sg 相比较,错位的数码个数。
按用途可分为3种。 (1)用于决定要扩展的下一个节点,以免
像在宽度优先或深度优先搜索中那样盲目 地扩展。
启发式搜索(续)
(2)在扩展一个节点的过程中,用于决 定要生成哪一个或哪几个后继节点,以 免盲目地同时生成所有可能的节点。
(3)用于决定某些应该从搜索树中抛弃 或修剪的节点。
2、估价函数 用来估算希望程度的量度,叫做估价
有序搜索又可分为两种:局部最佳优先 搜索和全局最佳优先搜索。
启发式搜索(续)
有序搜索算法(见P76-77) 宽度优先搜索、等代价搜索和深度优
先搜索均是有序搜索的特例。 宽度优先搜索,f(i)是节点i的深度。 等代价搜索,f(i)是从起始节点至节点i这段
路径的代价。 深度优先搜索,f(i)是节点i距目标节点的深
等代价搜索(续)
(3)从OPEN表中选择一个节点i,使其g(i)为最小。 如果有几个节点都合格,那么就要选择一个目标节点 作为节点i(如果有目标节点);否则,就从中选一 个作为节点i。把节点i从OPEN表移至CLOSED表中;
(4)如果节点i为目标节点,则求得一个解;
(5)扩展节点i。如果没有后继节点,则转向步骤(2)
盲目搜索(续)
启发式搜索又称有信息搜索,指搜索求 解过程中,根据问题本身的特性或搜索 过程中产生的一些信息来不断改变或调 整搜索的方向,使搜索朝着最有希望的 方向前进,加速问题的求解,并找到最 优解。求解的效率更高,更易于求解复 杂的问题。
盲目搜索(续)
3、研究和选用搜索算法的原则 (1)有限搜索还是无限搜索? (2)搜索空间是静态还是动态生成? (3)已知目标还是未知目标? (4)只要目标还是也要路径? (5)状态空间搜索还是问题空间搜索? (6)有约束还是无约束? (7)数据驱动还是目标驱动? (8)单向搜索还是双向搜索? (9)盲目搜索还是启发式搜索? (10)有对手搜索还是无对手搜索?
(6)对于节点i的每个后继节点j,计算 g(j)=g(i)+c(i,j),并把所有后继节点j放进OPEN表。 提供回到节点i的指针。
(7)转向步骤(2)。
等代价搜索(续)
举例分析
例:推销员旅行问题。
假设A,B,C,D,E是5个城市,推销员从
城市A出发,到达城市E,走怎样的路线费用
最省?5个城市间的交通图及每两个城市间的
函数。
启发式搜索(续)
一个节点的“希望”有几种不同的 定义方法。在状态空间问题中,一种定 义是估算目标节点到此节点的距离;另 一种定义是整条路径(包括被估价过的 节点)的长度或难度。
用符号f来标记估价函数,用f(n) 表示节点n的估价函数值。
启发式搜索(续)
3、有序搜索
用估价函数f来排列OPEN表上的节点, 选择OPEN表上具有最小f值的节点作为 下一个要扩展的节点。这种搜索方法叫 做有序搜索或最佳优先搜索。它总是选 择最有希望的节点作为下一个要扩展的 节本思想:
首先将问题的初始状态(即状态空间图中的 初始节点)当做当前状态,选择一适当的算符 作用于当前状态,生成一组后继状态(或称后 继节点),然后检查这组后继状态中有没有目 标状态。如果有,则说明搜索成功,从初始状 态到目标状态的一系列算符即是问题的解;若 没有,则按某种控制策略从已生成的状态中 再选一个状态作为当前状态,重复上述过程, 直到目标状态出现或不再有可供操作的状态及 算符为止。
等代价搜索(续)
记号
S:起始节点。 c(i,j): 节点i到它的后继节点j的连接弧线代价。 g(i): 起始节点S到任一节点i的路径代价,在搜索
树上它也是从起始节点S到节点i的最少代价路 径上的代价。
等代价搜索(续)
等代价搜索算法
与宽度优先搜索算法区别,以g(i)的递增 顺序扩展其节点,即根据节点的代价大小对 OPEN表中的所有节点进行从小到大的排序。 (1)把起始节点S放到OPEN表中。如果此起始 节点为一目标节点,则求得一个解;否则令 g(S)=0; (2)如果OPEN表是个空表,则没有解而失败 退出;
(3)若OPEN表是空表,则问题无解,失败退出。
(4)选择OPEN表中的第一个节点,把它从 OPEN表移出,并放入CLOSED表中,将此节点 记为节点n,它是CLOSED表中节点的编号。
(5)若n为一目标节点,则有解并成功退出。问 题的解即可从图G中沿着指针从n到S这条路径 而得到。
图搜索策略(续)
盲目搜索(续)
搜索包含两层含义:一是要找到从初始事实 到问题最终答案的一条推理路线,另一是找到 的这条路线是时间和空间复杂度最小的求解路 线。
2、搜索的种类
分为盲目搜索和启发式搜索。
盲目搜索又称无信息搜索,即在搜索过程中, 只按预先规定的搜索控制策略进行搜索,而没 有任何中间信息来改变这些控制策略。即问题 本身的特性对搜索控制策略没有任何影响,这 就使搜索带有盲目性,效率不高。只用于解决 比较简单的问题。
3.1.2 宽度优先搜索