Searching:1搜索策略Searching:2搜索是人工智能中的一个基本问题,并与推理密切相关,搜索策略的优劣,将直接影响到智能系统的性能与推理效率。Searching:3主要内容•状态空间的表示•搜索的基本概念•状态空间的搜索状态空间的一般搜索过程盲目搜索启发式搜索Searching:4概述问题求解AI中每个研究领域都有其各自的特点和规律,但就求解问题的过程看,都可抽象为一个问题求解过程.问题求解过程实际上是一个搜索,广义地说,它包含了全部计算机科学1974年,Nilsson归纳出的AI研究的基本问题–知识的模型化和表示–常识性推理、演绎和问题解决–启发式搜索–人工智能系统和语言本章讨论的表示主要包括:状态空间表示问题空间表示Searching:5搜索的基本概念•搜索的含义•状态空间法Searching:6•适用情况:不良结构或非结构化问题;难以获得求解所需的全部信息;更没有现成的算法可供求解使用。概念:依靠经验,利用已有知识,根据问题的实际情况,不断寻找可利用知识,从而构造一条代价最小的推理路线,使问题得以解决的过程称为搜索Searching:7搜索的类型按是否使用启发式信息:•盲目搜索:按预定的控制策略进行搜索,在搜索过程中获得的中间信息并不改变控制策略。•启发式搜索:在搜索中加入了与问题有关的启发性信息,用于指导搜索朝着最有希望的方向前进,加速问题的求解过程并找到最优解。按问题的表示方式:•状态空间搜索:用状态空间法来求解问题所进行的搜索•与或树搜索:用问题归约法来求解问题时所进行的搜索Searching:8什么是搜索根据问题的实际情况不断寻找可利用的知识,构造出一条代价较少的推理路线,使问题得到圆满解决的过程称为搜索包括两个方面:---找到从初始事实到问题最终答案的一条推理路径---找到的这条路径在时间和空间上复杂度最小搜索分两大类:盲目搜索:也称为无信息搜索,即只按预定的控制策略进行搜索,在搜索过程中获得的中间信息不用来改进控制策略启发式搜索:在搜索中加入了与问题有关的启发性信息,用于指导搜索朝着最有希望的方向进行,加速问题的求解过程并找到最优解Searching:9状态空间法•状态(State):是表示问题求解过程中每一步问题状况的数据结构,它可形式地表示为:Sk={Sk0,Sk1,…}当对每一个分量都给以确定的值时,就得到了一个具体的状态。•操作(Operator)也称为算符,它是把问题从一种状态变换为另一种状态的手段。操作可以是一个机械步骤,一个运算,一条规则或一个过程。操作可理解为状态集合上的一个函数,它描述了状态之间的关系。Searching:10状态空间(Statespace)用来描述一个问题的全部状态以及这些状态之间的相互关系。常用一个三元组表示为:(S,F,G)其中,S为问题的所有初始状态的集合;F为操作的集合;G为目标状态的集合。状态空间也可用一个赋值的有向图来表示,该有向图称为状态空间图。在状态空间图中,节点表示问题的状态,有向边表示操作。Searching:11状态空间表示法状态空间表示法是用来表示问题及其搜索过程的一种方法状态状态是描述问题求解过程中任一时刻状况的数据结构.23751486{A,B,C,D}(2,3,7,0,5,2,4,8,6)Searching:12状态空间表示法一般一个搜索问题由四个部分组成:–初始状态集合:定义了agent所处的环境;–操作符集合:把一个问题从一个状态变换为另一个状态的动作;–目标检测函数:agent用来确定一个状态是不是目标;–路径费用函数:对每条路径赋予一定费用的函数。初始状态集合和操作符集合定义了问题的搜索空间Searching:13状态空间法求解问题的基本过程:首先为问题选择适当的“状态”及“操作”的形式化描述方法;然后从某个初始状态出发,每次使用一个“操作”,递增地建立起操作序列,直到达到目标状态为止;此时,由初始状态到目标状态所使用的算符序列就是该问题的一个解。Searching:14八数码问题states数字的位置,共有9!/2=181440actions空格的上下左右移动goaltest给定的目标状态pathcost每一步消耗为1Searching:15二阶梵塔问题二阶梵塔问题。设有三根钢针,它们的编号分别是1号、2号和3号。在初始情况下,1号钢针上穿有A、B两个金片,A比B小,A位于B的上面。要求把这两个金片全部移到另一根钢针上,而且规定每次只能移动一个金片,任何时刻都不能使大的位于小的上面。Searching:16•解:设用Sk=(Sk0,Sk1)表示问题的状态,其中,Sk0表示金片A所在的钢针号,Sk1表示金片B所在的钢针号。全部可能的问题状态共有以下9种:S0=(1,1)S1=(1,2)S2=(1,3)S3=(2,1)S4=(2,2)S5=(2,3)S6=(3,1)S7=(3,2)S8=(3,3)Searching:17ABABAB123123123二阶梵塔问题的初始状态和目标状态问题的初始状态集合为S={S0}目标状态集合为G={S4,S5}初始状态S0和目标状态S4、S8如图所示S0=(1,1)S4=(2,2)S8=(3,3)Searching:18操作分别用A(i,j)和B(i,j)表示A(i,j)表示把金片A从第i号钢针移到j号钢针上;B(i,j)表示把金片B从第i号钢针一到第j号钢针上。共有12种操作,它们分别是:A(1,2)A(1,3)A(2,1)A(2,3)A(3,1)A(3,2)B(1,2)B(1,3)B(2,1)B(2,3)B(3,1)B(3,2)根据上述9种可能的状态和12种操作,可构成二阶梵塔问题的状态空间图,如下图所示。Searching:19(3,3)(1,3)(1,2)(2,2)二阶梵塔的状态空间图从初始节点(1,1)到目标节点(2,2)及(3,3)的任何一条路径都是问题的一个解。其中,最短的路径长度是3,它由3个操作组成。例如,从(1,1)开始,通过使用操作A(1,3)、B(1,2)及A(3,2),可到达(3,3)。A(1,2)B(1,3)A(2,3)(1,1)(3,1)(3,2)(2,1)(2,3)A(1,3)B(1,2)A(3,2)Searching:20例修道士(Missionaries)和野人(Cannibals)问题(简称M-C问题)设在河的一岸有三个野人、三个修道士和一条船,修道士想用这条船把所有的人运到河对岸,但受以下条件的约束:一是修道士和野人都会划船,但每次船上至多可载两个人;二是在河的任一岸,如果野人数目超过修道士数,修道士会被野人吃掉。如果野人会服从任何一次过河安排,请规划一个确保修道士和野人都能过河,且没有修道士被野人吃掉的安全过河计划。Searching:21解:首先选取描述问题状态的方法。在这个问题中,需要考虑两岸的修道士人数和野人数,还需要考虑船在左岸还是在右岸。从而可用一个三元组来表示状态S=(m,c,b)其中,m表示左岸的修道士人数,c表示左岸的野人数,b表示左岸的船数。右岸的状态可由下式确定:右岸修道士数m'=3-m右岸野人数c'=3-c右岸船数b'=1-b在这种表示方式下,m和c都可取0、1、2、3中之一,b可取0和1中之一。因此,共有4×4×2=32种状态。Searching:22这32种状态并非全有意义,除去不合法状态和修道士被野人吃掉的状态,有意义的状态只有16种:S0=(3,3,1)S1=(3,2,1)S2=(3,1,1)S3=(2,2,1)S4=(1,1,1)S5=(0,3,1)S6=(0,2,1)S7=(0,1,1)S8=(3,2,0)S9=(3,1,0)S10=(3,0,0)S11=(2,2,0)S12=(1,1,0)S13=(0,2,0)S14=(0,1,0)S15=(0,0,0)Searching:23操作是指用船把修道士或野人从河的左岸运到右岸,或从河的右岸运到左岸。每个操作都应当满足如下条件:一是船至少有一个人(m或c)操作,离开岸边的m和c的减少数目应该等于到达岸边的m和c的增加数目;二是每次操作船上人数不得超过2个;三是操作应保证不产生非法状态。Searching:24操作的表示:用符号Pij表示从左岸到右岸的运人操作用符号Qij表示从右岸到左岸的操作其中:i表示船上的修道士人数j表示船上的野人数操作集本问题有10种操作可供选择:F={P01,P10,P11,P02,P20,Q01,Q10,Q11,Q02,Q20}Searching:25至此,该问题的状态空间(S,F,G)构造完成,这就完成了对问题的状态空间表示。为了求解该问题,根据该状态空间的16种可能达到的合法状态和10种算符,构造状态转换图。Searching:26•用状态空间表示,首先必须定义状态的描述形式,把问题的一切状态都表示出来,其次定义算符,完成状态的转换•问题的求解过程就是一个把算符不断地作用于状态的过程.如果在使用某个算符后得到的状态就是目标状态,就得到了问题的解.这个解就是从初始状态到目标状态所用算符构成的序列.Searching:27•算符的一次使用,就使问题由一种状态转变为另一种状态.可能有多个算符序列都可使问题从初始状态变到目标状态,这就得到了多个解.•对任何一个状态,可使用的算符可能不止一个,这样由一个状态所生成的后继状态可能有多个.如何选择下一步的操作,由搜索策略决定.Searching:28搜索策略•搜索的基本概念•状态空间的盲目搜索•状态空间的启发式搜索Searching:29状态空间的盲目搜索一般图搜索过程广度优先和深度优先搜索代价树搜索Searching:30状态空间搜索的基本思想先把问题的初始状态作为当前扩展节点对其进行扩展,生成一组子节点,然后检查问题的目标状态是否出现在这些子节点中。若出现,则搜索成功,找到了问题的解;若没出现,则再按照某种搜索策略从已生成的子节点中选择一个节点作为当前扩展节点。重复上述过程,直到目标状态出现在子节点中或者没有可供操作的节点为止。所谓对一个节点进行“扩展”是指对该节点用某个可用操作进行作用,生成该节点的一组子节点。Searching:31算法的数据结构和符号约定Open表:用于存放刚生成的节点Closed表:用于存放已经扩展或将要扩展的节点S0:用表示问题的初始状态G:表示搜索过程所得到的搜索图M:表示当前扩展节点新生成的且不为自己先辈的子节点集。Searching:32如何度量问题求解的性能一般搜索策略可以通过下面四个准则来评价:–完备性:如果存在一个解答,该策略是否保证能够找到?–时间复杂性:需要多长时间可以找到解答?–空间复杂性:执行搜索需要多少存储空间?–最优性:如果存在不同的几个解答,该策略是否可以发现最高质量的解答?Searching:33如何度量问题求解的性能搜索策略反映了状态空间或问题空间扩展的方法,也决定了状态或问题的访问顺序。在AI领域,状态空间图由初始状态和算子隐含地表示,经常是无限的,它的复杂度根据下面三个值来表达:分支因子b:任何节点的后继的最大个数最浅的目标节点的深度d状态空间中任何路径的最大长度mSearching:34状态空间搜索过程要点求解一个能够满足目标条件的问题可以表达为搜索一个图以找到一个满足目标状态描述的节点问题。搜索过程的要点如下:–起始节点:对应于初始状态描述–后继节点:把适用于某个节点状态描述的一些算符用来推算该节点而得到的新节点,称为该节点的后继节点–指针:从每个后继节点返回指向其父辈节点–检查各后继节点看是否为目标节点.Searching:35状态空间搜索过程要点搜索过程扩展后继节点的次序•如果搜索是以接近起始节点的程度(由节点之间连结弧线的数目来衡量)依次扩展节点,称为广(宽)度优先搜索•如果搜索时首先扩展最新产生的节点,称为深度优先搜索Searching:36状态空间搜索过程要点•调整指针•扩展一个节点–生成出该节点的所有后继节点。•弧的费用–有一条弧连接ni和nj两个节点,用C(ni,