目录
一、搜索策略
1、引言
2、盲目搜索
3、启发式搜索
二、基于状态空间图搜索技术
1、图搜索基本概念
2、状态空间搜索
3、一般的图搜索算法
三、盲目搜索
1、广度优先搜索
2、深度优先搜索
3、有界深度搜索和迭代加深搜索
四、启发式算法
1、启发性信息和评估函数
2、A算法
3、A*算法
4、迭代加深A*算法
5、回溯策略和爬山法
五、问题规约和与或图启发式搜索
1、问题规约
2、与或图表示
3、与或图启发式搜索
六、博弈
1、概念
2、极大极小过程
3、α-β过程
一、搜索策略
1、引言
搜索被列为人工智能研究的四个核心问题(知识的模型化和表示,启发式搜索,各种推理方法,人工智能系统和语言)
应用:在专家系统、自然语言理解、自动程序设计、模式识别、机器人学、信息检索和博弈等领域都广泛使用搜索技术。
搜索问题一般包括两个重要问题:搜索什么(搜索目标)和在哪里搜索(搜索空间)。
由于人工智能中大多数问题的状态空间(也称搜索空间)在问题求解之前不是全部知道的,所以人工智能的搜索分成两个阶段:状态空间的生成阶段和该状态空间中对所求问题状态的搜索阶段。
搜索根据是否使用启发式知识,搜索被分为盲目搜索和启发式搜索两种。
2、盲目搜索
盲目搜索:指在问题的求解过程中,不运用启发性知识,只按照一般的逻辑法则或控制性知识,在预定的控制策略下进行搜索,在搜索过程中获得的中间信息不用来改进控制策略。
特点:只按照规定的路线进行,缺乏对求解问题的针对性,需要进行全方位的搜索,没有选择最优的搜索途径。具有盲目性,效率较低。
常见的盲目搜索:深度优先搜索和广度有限搜索。
3、启发式搜索
启发式搜索:指在问题的求解过程中,为提高搜索效率,运用与问题有关的启发式知识,即解决问题的策略、技巧、窍门等实践经验和知识,来指导搜索朝着最有希望的方向前进,加快问题求解过程并找到最优解。
常见的启发式搜索有:A算法和A*算法。
搜索策略可以通过四个准则评价:完备性、时间复杂性、空间复杂性、最优性。
二、基于状态空间图搜索技术
1、图搜索基本概念
(1)显式图和隐式图
显式存储:把与问题有关的全部状态空间图,即相应的全部有关知识,都直接存入知识库,这种存储方式为显式存储或显式图。
隐式存储:只存储与问题求解有关的部分知识,这种存储方式为隐式存储。
(2)图搜索的基本思想
图搜索就是一种在图中寻找路径的方法,这种寻找过程从图中的初始节点开始,至目标节点为止,其中初始节点和目标节点分别代表产生式系统的初始数据库和满足终止条件的数据库。
图搜索方法:先把问题的初始状态作为当前状态,选择适用的算符对其进行操作,生成一组子状态,检查目标状态是否在其中出现,若出现,则搜索成功,找到问题的解,若不出现,则按照某种搜索策略从已生成的状态中再选一个状态作为当前状态。不断重复上述过程,直到目标状态出现或者不再有可供操作的状态及算符时为止。
2、状态空间搜索
状态空间搜索:用搜索技术来求解问题的系统均定义一个状态空间,并通过适当的搜索算法在状态空间中搜索解答或解答路径。状态空间搜素的研究焦点在于设计高效的搜索算法,以降低搜索代价并解决组合爆炸问题。
什么是状态空间图?
假设有三枚硬币,用一个三维变量表示为[q1,q2,q3],其中qi=0为硬币正面,qi=1为硬币反面,所以一共出现有8种组合,互相的变换如下面的状态空间图。
状态空间图:人工智能科学中,把这种描述问题的有向图称为状态空间图,简称状态图。状态图中,从初始节点到目标节点的一条路径,或者所找的目标节点,就是相应问题的一个解。
问题状态空间表示法:“状态”+“操作”=“状态空间”
何为状态,操作,状态空间?
状态:是指为了描述问题求解过程中不同时刻下状况间的差异,而引入的最少的一组变量的有序组合,表示形式为:,其中每一个作为一个分量,当每个分量的值给定时,就得到一个具体的状态,状态的维数可以是有限的,也可以是无限的。另外,状态也可以表示成多元数组或其他形式,状态主要用于表示叙述性知识。
操作:运算符或算符,它引起状态中某些分量发生改变,从而使问题由一个具体状态改变为另一个具体状态。操作指出状态之间的关系,用于反映过程性知识。
状态空间:一个由问题的全部可能状态及其相互关系(即操作)所构成的有限集合。状态空间常记为二元组:(S,O)。其中S为问题求解(搜索)过程中的所有可能到达的合法状态构成的集合。O为操作算子的集合,操作算子的执行会导致问题状态的变迁。
3、一般的图搜索算法
图搜索一般搜索过程由尼尔逊提出GRAPH SEARCH,是表达能力很强的一个搜索策略框架。
在此过程中要用到OPEN表和CLOSE表,OPEN表用于待扩展的节点,节点进入由OPEN表中的排列顺序是由搜索策略决定,CLOSE表用于存放已经扩展的节点,当前节点进入CLOSE表的最后。
图搜索一般过程如下:
(1)建立一个只含有初始节点的搜索图G,把放到OPEN表中。
(2)建立CLOSE表,其初始为空表。
(3)LOOP:若OPEN表为空表,则问题无解,失败并退出。
(4)把OPEN表上的第一个节点移出并放进CLOSE表的后面,标记此节点为节点n(在CLOSE表的编号栏标记)
组合爆炸问题:解题因素多时,因素的可能组合个数会爆炸性(指数级)增长,引起状态空间的急剧膨胀,解决组合爆炸问题的方法实际上就是选用好的搜索策略,使得只要搜索状态空间很小部分就能找到解答。
三、盲目搜索
1、广度优先搜索
一层一层搜索,搜索完本层后所有结点才能进入下一层。OPEN表作为队列,先进先出,优先向横向方向发展,深度从0开始。
广度优先搜索空间复杂度: (假设每层b个节点,一共为d层树)
特点:总能找到目标节点,但时间,空间复杂度高,搜索效率低。
2、深度优先搜索
沿着树的深度遍历树的节点,尽可能深的搜索树的分支。
深度优先搜索空间复杂度: (相较于广搜有所降低)
特点:相对宽度优先需要的空间较少,但容易陷入无限循环,找不到最优解。
3、有界深度搜索和迭代加深搜索
有界深度搜索:在深度搜索的基础上加上了深度上的限制(状态空间的直径),当深度达到时,如果还没有找到解答,也将停止对该分支的搜索,换到另外一个分支进行搜索。
的值可以进行改变,这就是迭代加深搜索的基本思想。
四、启发式算法
正向推理:从初始问题出发向目标状态方向执行,用于状态空间的搜索。
反向推理:从目标状态出发向初始状态方向执行,用于问题规约中。
1、启发性信息和评估函数
启发式搜索:如果能在选择节点时能充分利用与问题有关的特征信息,估计出节点的重要性,就能在搜索时选择重要性较高的节点,以利于求得最优解。
启发信息:与被解问题的某些特征值有关的控制信息(如解的出现规律,解的结构特征等)称为搜索的启发信息。
评估函数:评估待扩展各节点在问题求解中的价值,即评估节点的重要性。
评估函数公式:f(x)=g(x)+h(x)
其中g(x)为初始节点到一个节点x的实际代价,h(x)从这个节点x到目标节点的最优路径的估计代价,体现了问题的启发式信息,h(x)称为启发式函数。
2、A算法
每一步都按照评估函数来对OPEN表中的节点排序,为A算法,又称启发式搜索算法。
具体方法参见:启发式搜索算法:A算法(全局、局部择优算法)+A*算法 解决八数码问题
3、A*算法
搜索法总能找到最短(代价最小)的解答路径,则称为算法有可采纳性,广度优先搜索就是可采纳的,但是效率不高。
定义h`(n)为实际代价,h(n)为估计代价。
当h(x)<h`(x)时,h(x)弱,则OPEN表中节点排序误差较大,易产生较大搜索。
当h(x)>h`(x)时,h(x)强,使A*算法失去可采纳性,从而不能找到最短解答路径。
当h(x)=h`(x),可以确保产生最小的搜索图,且搜索到的解答路径是最短的。但这是不可能的。
设计h(x)时,若g(x)=0,则搜索接近深度优先搜索,h(x)=0则搜索接近广度优先搜索。
可以在设计h(x)时添加一个使f(x)=g(x)+h(x),通过增大减小的值来满足深度或广度搜索。
4、迭代加深A*算法
设置一个限制值C,当节点n的子节点n`的f(n`)<C时,才扩展n`节点入栈,并更新C的值(取C和f(n`)较小者)。
算法终止条件:找到目标节点或栈空且限制值C=∞。
5、回溯策略和爬山法
回溯策略:保存每次扩展出的子节点,并按照h(x)的值从小到大排列,如此,相当于爬山过程中记住途中的岔路口,只要当前路径搜索失败就回溯到时序上最近的岔路口,向另一路径方向搜索,以保证最后到达最高峰(目标状态)
爬山法:选h(x)最小的子节点进行扩展(贪心算法),适合单一极值问题,不适合多极值问题,不一定获得最优解。
五、问题规约和与或图启发式搜索
1、问题规约
问题规约:复杂问题变换为若干较为简单的子问题(本原问题)后再加以分别求解。
问题规约是一种广义的状态空间搜索技术,其状态空间可表示为三元组:
是初始问题,即要求解问题。
P是本原问题集,其中每一个问题都不用证明,如公理,已知事实。
O是操作算子集,它是一组变换规则,通过一个操作算子把一个问题化为若干个子问题。
变换三种情况:
(1)状态变迁——导致问题从上一状态到下一状态,类似一般图搜索技术中操作算子的作用
(2)问题分解——分解问题为需同时解决子问题,不改变问题状态
(3)基于状态变迁的问题分解——先导致状态变迁,再实现问题分解,两个过程联合执行
2、与或图表示
与或图就是用于表示此类求解过程的一种方法,是一种树图的形式。
“与”树:“与”关系中任何一个子问题无解,则原问题无解。
“或”树:“或”关系只有当全部子问题无解时,原问题才无解。
K-连接:用于表示从父节点到子节点间的连接,并以圆弧指示同父子节点之间的“与”关系,K为这些子节点的个数,一个父节点可以有多个外向的K-连接,K大于1的连接为超链接,K等于1时退化为普通链接,而当所有超链接的K都等于1时,与或图退化为一般图。
根、叶、终节点:根节点和叶节点不需要解释,终节点是指当问题规约伴随问题分解后,目标状态不再由单一节点表示,而是由一组节点联合表示,能用于联合表示目标状态的节点为终节点,终节点必然是叶节点,非终节点的叶节点往往指示了解答搜索的失败。
解图生成:在与或图搜索过程中,从根节点开始选一外向连接,并从该链接指向的每个子节点出发,再选一外向连接,如此反复进行,直到所有外向连接都指向终节点为止。
3、与或图启发式搜索
与或图中搜索的解图,不是由相邻节点间路径连接成的解路径,所以估算评估函数f(n)的第一分量g(n)没有意义,只需要算第二分量h(n),此时h(n)是对最小解图代价的估计。
此时
算法应用的若干问题:
(1)从局部解图中选择加以扩展的节点:鉴于与或图搜索是解图而非解路径,所以选择f(n)=h(n)的值最小的节点加以扩展并不一定会加速搜索过程,而应选择导致解图代价发生较大变化的节点优先加以扩展以使搜索的注意力快速地聚焦到实际代价较小的候选解图上。
(2)AO*算法可采纳性:AO*算法应用要求遵从以下约束:总能满足且满足h(n)满足单调限制条件,应用AO*算法一定能找到代价最小的解图。
六、博弈
1、概念
二人零和:在博弈中只有“敌、我”二方,且双方的利益完全对立,其赢得函数之和为零,即,其中为我方赢得利益,为敌方赢得利益。
博弈三种结局:
(1)我胜:>0,敌败:<0
(2)我负:<0,敌胜:>0
(3)平局:==0
全信息:博弈双方都了解当前的格局及过去的历史。
非偶然:博弈双方都根据得失大小进行分析,选取我方赢得最大,敌方赢得最小的对策,而不是偶然的随机对策。
2、极大极小过程
极大极小过程是考虑双方博弈若干步之后,从可能的走法中选一步相对好的走法来走,即从有限的搜索深度范围内进行求解。
静态估价函数e(x),以便对棋局的态势做出评估,博弈双方分别为MAX为MIN,其中p代表棋局,对于有利于MAX方态势,e(p)取正,对于有利于MIN方态势,e(p)取负,态势均衡时,e(p)取零。
博弈树:博弈过程可以采用与或树进行知识表达。不同级别(深度)的节点,分别交替属于敌我双方,在博弈树生成过程中,敌我双方轮流进行扩展的,新生成的子节点,双方交替出现。
3、α-β过程
α-β过程首先使搜索树某一部分达到最大深度,这时计算某些MAX节点的α值,或者某些MIN节点的β值,随着搜索的继续,不断修改个别节点的α或β值。对任意节点,当某一后继节点的最终值给定时,就可以确定该节点的α或β值,当该结点的其他后继节点的最终值给定时,就可以该结点的α或β值进行修正。
MAX节点的α值永不下降,MIN节点的β值永不增加。
在α-β过程中可以及时剪掉一些无用分枝,来提高算法的效率。
参考视频:【人工智能教程】3.1 - 搜索策略引言_哔哩哔哩_bilibili
参考书籍:《人工智能原理》丁世飞