1、1.5 搜索算法讨论,1.弱方法人工智能范畴的一些问题都比较复杂,一般无法用直接求解的方法找到解答,因此需借助搜索技术。前面几节讨论的搜索方法都难以克服搜索过程的组合爆炸问题,因此在人工智能领域中,把这些方法统称为“弱方法”。“弱方法”:为避免求解过程中的组合爆炸,在搜索算法中引入启发性信息,多数情况能以较小的代价找到解,但并不能保证任何情况下都能获得解。,优选法解极值问题搜索过程的特点:设状态是实数域a ,b上实值连续函数f,求该目标函数在何处取得极值及其大小。 在几何学中黄金分割法的思想是在区间0,1间取0.618和0.382两个特殊点来考虑问题:若f(0.382)较优,则剪去0.618,
2、1区段;若f(0.618)较优,则剪去0,0.382区段;然后在新区间依此规则继续下去,直至函数f在某一点取得极值,这就是优选法的特点。 f中包含了启发信息,下面给出该算法:,黄金分割法: x1:=0,x2:=1,x3:=0.382.x4:=0.618;赋变量初值 LOOP1:IF XX THEN EXIT(SUCCESS);IF f(x3)f(x4) THEN GO LOOP2;IF f(x3)f(x4) THEN Go LOOP3;IF F(x3)=f(x4) THEN GO LOOP2VLOOP3; 可根据某种原则决定 LOOP2:x2:=x4,x4:=x3,x3:=x1+x2-x4;
3、GO LOOP1; LOOP3: x1:=x3,x3:=x4,x4:=x1+x2-x3; GO LOOP1 由于计算中引入极强的启发信息,因而获得最佳的搜索效果,可以证明f在0,1间具有单极值时,f(x3)或f(x4)即为求得的极值点,而且求解过程搜索的点数是最少的。,2.搜索算法分析,算法分析主要回答这些方法执行的效果怎样,找到的解其优劣程度如何。 搜索过程最基本的一个分析是对深度为D,分支因数为B的一棵完全树的结点数进行讨论。 目前优于穷举法的方法有3种情况: 能保证找到的解与穷举法所得结果一样好,但耗时较少。这类方法的问题是能否给出某一方法具体有多快。 对问题的一些实例,耗费时间和穷举法
4、一样,但对另一些实力则较穷举方好得多。这类方法的问题是运行一组一般问题,期望有多快。 得到的解比穷举法结果较差。问题是要在给定时间内找到解,这个解与最佳解之间有多大差别。,求解人工智能问题的一个途径是企图以多项式时间求解NP完全类问题。 分支界限法实际上是第一种选择的实例: 各种选择按完美排序进行时,最好情况下其性能有多好。 各种选择按不良排序进行时,最差情况下其性能有多好。 各种选择按某种随机过程的排序进行时,平均情况下其性能有多好。 各种选择按应用于一组特定问题的启发函数排序进行时,在实际世界中,平均角度看其性能有多好。,3.数字魔方问题求解的搜索策略,在88的棋盘方格上,填入164的数字
5、,其结果如下图:,其主要特征是每行或每列8个数字的总和为260.在进一步分析发现任一半行或半列4个数字的总和为130;任一拐弯对角线8个数字的总和也是260(如16,63,57,10,23,40,34,17或50,8,7,54,43,26,25,47两条拐弯对角线);4角的4个 数字(52,45,16,17)与中心的4个数字 (54,43,10,23)也是260;任意一个22的子魔方的4个数字之和是130(如52,61,14,3或23,26,41,40),还可给出几个类似的性质。魔圆性质与魔方类似,这里不做拗述,详情请看课本。,下面讨论一个最简单的33数字魔方问题。19 共9个数字填入魔方格使
6、行,列和对角线数字总和相等。 N阶(奇次)魔方算法: D:=1,P(D,(x=N/2,y=N);函数P把最小数字置于顶行中心处,每一方格用坐标标记。 LOOP:D:=D+1,x:=x+1,y:=y+1; IF D=N2 THEN EXIT(SUCCESS); IF (xN) THEN P(D , (x,y-N)IF (xN) (yN) (yN) THEN IF (x-N,y-N)=NILTHEN P(D , (x-N,y-N)ELSE P(D ,(x-1,y-2); GO LOOP,该算法应用于 33数字魔方问题,其搜索图如下:,构造算法的基本启发信息是把数字等分成N组,每一组N个数字放置原则
7、是每一个数字必须处在不同行不同列的方格上,这样搭配可能使行,列和对角线的数字和相近乃完全相等。N(奇次)阶魔方,行,列或对角的总和值S=N(1+N2)/2),只有满足总和为S的2N+2组排法才能够成解。其中具有公共元的4组数字应排列在中心行,中心列和对角线上,且公共元的那个数字必定处在中心格位置上,还有3组共有的那些数字必定处在四角位置上。,单偶阶数字魔方阵的填法 : 在数字魔方阵(幻方)中,行列数n为偶数,且不能被4整除 (n=6,10,14,18,22) (n=4k+2,k=1,2,3,4,5)的幻方,称为单偶阶数字魔方阵(单偶阶幻方)。它是奇数阶幻方、双偶阶幻方、单偶阶幻方三种幻方里最复
8、杂的魔方阵。 以n=10为例。这时,k=2。 (1)把魔方阵分为A,B,C,D四个象限,这样每一个象限肯定是奇数阶。用罗伯法,依次在A象限,D象限,B象限,C象限按奇数阶幻方的填法填数。,(2)在A象限的中间行、中间格开始,按自左向右的方向,标出k格。A象限的其它行则标出最左边的k格。将这些格,和C象限相对位置上的数,互换位置。,任意偶次阶的数字魔方问题,其求解方法可以从程序设计参考书中找到,这里不做介绍。,(3)在B象限任一行的中间格,自右向左,标出k1列。(注:6阶幻方由于k1=0,所以不用再作B、D象限的数据交换),将B象限标出的这些数,和D象限相对位置上的数进行交换,就形成数字魔方阵。,4.搜索算法的研究工作,A*算法是N.J.Nilsson在20世纪70年代初研究成果,是从函数的观点来讨论搜索问题,并在理论上取得若干成果。但A*算法不能完全克服“指数爆炸”。 20世纪70年代末J.Pearl从概率论观点研究了启发式估计的精度同A*算法平均复杂性的关系。 20世纪80年代初,张钹,张玲提出把启发式搜索看成某种随机取样的过程,从而将统计推断引入启发式搜索。 总之,搜索策略是人工智能研究的核心问题之一,已有很多成熟的结果,并在解决人工智能的有关问题中得到广泛应用。,