人工智能搜索

上传人:s****a 文档编号:181383078 上传时间:2023-01-13 格式:DOCX 页数:12 大小:85.37KB
收藏 版权申诉 举报 下载
人工智能搜索_第1页
第1页 / 共12页
人工智能搜索_第2页
第2页 / 共12页
人工智能搜索_第3页
第3页 / 共12页
资源描述:

《人工智能搜索》由会员分享,可在线阅读,更多相关《人工智能搜索(12页珍藏版)》请在装配图网上搜索。

1、人工智能搜索技术初探【摘要】本文简要概述了人工智能搜索技术,分别对盲目搜索和启发式搜索做了阐述,并且用深度优先搜索初步分析了野人和牧师过河问题,用A*算法初步分析了九宫图问题。【关键词】搜索技术;盲目搜索;启发式搜索;宽度优先搜索;深度优先搜索;野人与牧师;A*算法;九宫图;搜索技术是人工智能的基本技术之一,在人工智能各应用领域中被广泛地使用。早期的人工智能程序与搜索技术联系更为密切,几乎所有早期的人工智能程序都是以搜索技术为基础的。例如,A.Newell和H.A.Simon等人编写的LT(LogicTheorist)程序。现在,搜索技术渗透在各种人工智能系统中,可以说没有哪一种人工智能系统应

2、用不到搜索方法。在专家系统、自然语言理解、自动程序设计、模式识别、机器人学、信息检索和博弈等领域都广泛使用搜索技术。人工智能问题,广义地说都可以看作是一个问题求解过程,因此问题求解是人工智能的核心问题,通常是通过在某个可能的解答空间中寻找一个解来进行的。在问题求解过程中,人们所面临的大多数显示问题往往没有确定性的算法,通常需要用搜索算法来解决。目标和达到目标的一组方法称为问题,搜索就是探究这些方法能够做什么的过程。问题求解一般需要考虑两个基本问题:首先是使用合适的状态空间表示问题,其次是测试该状态空间中目标状态是否出现。一般搜索可以根据是否使用启发式信息分为盲目搜索和启发式搜索。一:盲目搜索盲

3、目搜索又叫非启发式搜索,是一种无信息搜索,一般只使用求解比较简单的问题。宽度优先搜索、深度优先搜索、分支有限搜索、迭代加深搜索都是盲目搜索。1.宽度优先搜索宽度优先搜索算法(又称广度优先搜索算法)是最简单的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijksta单源最短路径算法和Prim最小生成树算法都采用了与宽度优先搜索类似的思想。宽度优先搜索的核心思想是:从初始结点开始,应用算符生成第一层结点,检查目标结点是否在这些后继结点中,若没有,再用产生式规则将所有第一层的结点逐一扩展,得到第二层结点,并逐一检查第二层结点中是否包含目标结点。若没有,再用算符逐一扩展第二层所有结点,如此

4、依次扩展,直到发现目标结点为止。宽度优先搜索基本算法如下:listl:=source;加入初始结点,list为待扩展结点的表head:=0;队首指针foot:=1;队尾指针REPEAThead:=head+1;FORx:=1to规则数DOBEGIN根据规则产生新结点nw;IFnot_appear(nw,list)THEN若新结点队列中不存在,则加到队尾BEGINfoot:=foot+1;listfoot:=nw;listfoot.father:=head;IFlistfoot二目标结点THEN输出;END;END;UNTILheadfoot;队列为空表明再无结点可扩展2.深度优先搜索深度优先搜

5、索所遵循的搜索策略是尽可能“深”地搜索图。在深度优先搜索中,对于最新发现的结点,如果它还有以此为起点而未搜过的边,就沿着边继续搜索下去。当结点v的所有边都已被探寻过,搜索将回溯到发现结点v有那条边的始结点。这一过程一直进行到已发现从源结点可达的所有结点为止。如果还存在未被发现的结点,则选择其中一个作为源结点并重复以上过程,整个过程反复进行直到所有结点都被发现为止。深度优先搜索基本算法如下递归算法:ProcedureDepth-first-searchBegin把初始结点压入栈,并设置栈顶指针;While栈不空doBegin弹出栈顶元素;if栈顶元素二goal,成功返回并结束;Else以任何次序

6、把栈顶元素的子女压入栈中;EndWhileEnd例1.野人过河问题野人过河问题属于人工智能学科中的一个经典问题,问题描述如下:有三个牧师和三个野人过河,只有一条能装下两个人的船,在河的任何一方或者船上,如果野人的人数大于牧师的人数,那么牧师就会有危险.你能不能找出一种安全的渡河方法呢?算法分析先来看看问题的初始状态和目标状态,假设和分为甲岸和乙岸:初始状态:甲岸,3野人,3牧师;乙岸,0野人,0牧师;船停在甲岸,船上有0个人;目标状态:甲岸,0野人,0牧师;乙岸,3野人,3牧师;船停在乙岸,船上有0个人。整个问题就抽象成了怎样从初始状态经中间的一系列状态达到目标状态。问题状态的改变是通过划船渡

7、河来引发的,所以合理的渡河操作就成了通常所说的算符,根据题目要求,可以得出以下5个算符(按照渡船方向的不同,也可以理解为10个算符):渡1野人、渡1牧师、渡1野人1牧师、渡2野人、渡2牧师算符知道以后,剩下的核心问题就是搜索方法了,本题采用深度优先搜索,通过一个findnext()函数找出下一步可以进行的渡河操作中的最优操作,如果没有找到则返回其父节点,看看是否有其它兄弟节点可以扩展,然后用process()函数递规调用findnext(),一级一级的向后扩展。搜索中采用的一些规则如下:1)渡船优先规则:甲岸一次运走的人越多越好(即甲岸运多人优先),同时野人优先运走;乙岸一次运走的人越少越好(

8、即乙岸运少人优先),同时牧师优先运走;2)不能重复上次渡船操作(通过链表中前一操作比较),避免进入死循环;3)任何时候河两边的野人和牧师数均分别大于等于0且小于等于3;4)由于只是找出最优解,所以当找到某一算符(当前最优先的)满足操作条件后,不再搜索其兄弟节点,而是直接载入链表;5)若扩展某节点a的时候,没有找到合适的子节点,则从链表中返回节点a的父节点b,从上次已经选择了的算符之后的算符中找最优先的算符继续扩展b。算法框图如下:图-1二、启发式搜索所谓启发式搜索就是利用一个评估函数对状态空间中的搜索中的每一个搜索位置的价值进行评估,决定先尝试哪一个方案,从而可省略大量无用的搜索路径,极大的优

9、化普通的广度优先搜索。与普通的广度优先搜索不同的是,启发式搜索会优先顺着有启发性和具有特定信息的结点搜索下去,这些结点可能是达到目标状态空间的最好路径。其核心思想是通过引人一个启发式函数(或称为评估函数),为了有利于回溯到早期路径的搜索,可以为评估函数增加一个深度因子,这样,定义的评估函数就是:f(n)二g(n)+h(n);其中f(n)是节点n的估价函数,g(n)二搜索图中结点n的深度,是从开始结点到n结点的最短路径长度;h(n)二不正确位置的数码个数(和目标状态相比),是从n到目标节点最佳路径的估计代价。在这里主要是h(n)体现了搜索的启发信息,因为g(n)是已知的,或者说g(n)代表了搜索

10、广度的优先趋势。当h(n)远大于g(n)时,可以省略g(n)而达到提高搜索效率的目的。启发式搜索其实有很多的算法,比如:局部择优搜索法、最好优先搜索法等等。当然A*也是。这些算法都使用了启发函数,但在具体的选取最佳搜索节点时的策略不同。象局部择优搜索法,就是在搜索的过程中选取“最佳节点”后舍弃其他的兄弟节点,父亲节点,而一直得搜索下去。这种搜索的结果很明显,由于舍弃了其他的节点,可能也把最好的节点都舍弃了,因为求解的最佳节点只是在该阶段的最佳并不一定是全局的最佳。最好优先就好多了,在搜索时,没有舍弃节点(除非该节点是死节点),在每一步的估价中都把当前的节点和以前的节点的估价值比较得到一个“最佳

11、的节点”。这样可以有效的防止“最佳节点”的丢失。那么A*算法又是一种什么样的算法呢?其实A*算法也是一种最好优先的算法。只不过要加上一些约束条件罢了。由于在一些问题求解时,我们希望能够求解出状态空间搜索的最短路径,也就是用最快的方法求解问题,A*就是干这种事情的!我们先下个定义,如果一个估价函数可以找出最短的路径,我们称之为可采纳性。A*算法是一个可采纳的最好优先算法。A*算法的估价函数可表示为:f(n)=g(n)+h(n)这里,f(n)是估价函数,g(n)是起点到终点的最短路径值,h(n)是n到目标的最断路经的启发值。由于这个f(n)其实是无法预先知道的,所以我们用前面的估价函数f(n)做近

12、似。g(n)代替g(n),但g(n)=g(n)才可(大多数情况下都是满足的,可以不用考虑),h(n)代替h(n),但h(n)=h(n)才可(这一点特别的重要)。可以证明应用这样的估价函数是可以找到最短路径的,也就是可采纳的。举一个例子,其实广度优先算法就是A*算法的特例。其中g(n)是节点所在的层数,h(n)=0,这种h(n)肯定小于h(n),所以由前述可知广度优先算法是一种可采纳的。实际也是。当然它是一种最臭的A*算法。再说一个问题,就是有关h(n)启发函数的信息性h(n)的信息性通俗点说其实就是在估计一个节点的值时的约束条件,如果信息越多或约束条件越多则排除的节点就越多,估价函数越好或说这

13、个算法越好。这就是为什么广度优先算法的那么臭的原因了,谁叫它的h(n)=O,点启发信息都没有。但在游戏开发中由于实时性的问题,h(n)的信息越多,它的计算量就越大,耗费的时间就越多。就应该适当的减小h(n)的信息。A*算法:A*(A-Star)算法是一种静态路网中求解最短路最有效的方法。公式表示为:f(n)=g(n)+h(n)其中f(n)是节点n从初始点到目标点的估价函数,g(n)是在状态空间中从初始节点到n节点的实际代价,h(n)是从n到目标节点最佳路径的估计代价。保证找到最短路径(最优解的)条件,关键在于估价函数h(n)的选取:估价值h(n)实际值,搜索的点数少,搜索范围小,效率高,但不能

14、保证得到最优解。估价值与实际值越接近,估价函数取得就越好。例如对于几何路网来说,可以取两节点间欧几理德距离(直线距离)做为估价值,即f=g(n)+sqrt(dx-nx)*(dx-nx)+(dy-ny)*(dy-ny);这样估价函数f在g值一定的情况下,会或多或少的受估价值h的制约,节点距目标点近,h值小,f值相对就小,能保证最短路的搜索向终点的方向进行。明显优于Dijstra算法的毫无无方向的向四周搜索。主要搜索过程:创建两个表,OPEN表保存所有已生成而未考察的节点,CLOSED表中记录已访问过的节点。遍历当前节点的各个节点,将n节点放入CLOSE中,取n节点的子节点X,-算X的估价值-Wh

15、ile(OPEN!=NULL)从OPEN表中取估价值f最小的节点n;if(n节点二二目标节点)break;elseif(XinOPEN)比较两个X的估价值f/注意是同一个节点的两个不同路径的估价值if(X的估价值小于OPEN表的估价值)更新OPEN表中的估价值;/取最小路径的估价值if(XinCLOSE)比较两个X的估价值/注意是同一个节点的两个不同路径的估价值if(X的估价值小于CLOSE表的估价值)更新CLOSE表中的估价值;把X节点放入OPEN/取最小路径的估价值if(Xnotinboth)求X的估价值;并将X插入OPEN表中;/还没有排序将n节点插入CLOSE表中;按照估价值将OPEN

16、表中的节点排序;/实际上是比较OPEN表内节点f的大小,从最小路径的节点向下进行。例2.九宫图问题九宫图问题是指在一个3X3的方阵中有8个数码,初始状态是这8个数码无序或部分无序,是否能找到一个数码移动序列使初始的无序数码转变为一些特殊的排列,达到目标状态。这种问题的含义是给定一种初始布局(称初始状态)和一个目标布局(称目标状态),问如何移动数码,实现从初始状态到目标状态的转变。问题的解答其实就是寻找一个动作序列。在这个问题中,一个明显的目标状态描述是一个3X3的方阵,方阵的每个单元中包含1-8之间的一个数字或一个代表空格的符号。不同状态间的转化就是把一个数码移到与之相邻的空的单元中。为了较简

17、便地处理,一个有效的方法是每次考查空格的移动:空格上移、空格下移、空格左移、空格右移。这个问题当然可以用穷举的方法进行盲目搜索,但由于生成的搜索树存储空间大,且搜索效率不高,因此常使用启发式搜索以控制搜索路径的选取,从而达到减少搜索宽度、提高求解效率的目的。以下具体分析:2呂3154751238斗765有如图-2所示的九宫图问题:图-2现在采用估计函数为:f(n)二d(n)+w(n)其中d(n)为搜索树的深度,w(n)为放错位置的数字的个数。其搜索图如图-3SO184283714214676528320f=3+3f=3+4f=3+3f=4+3Elf图-3f=5+2ff=4+1f=5+2f=3+2f=3+4f=3+3Sgf=5+0三、总结在人工智能中,搜索问题一般包括两个重要问题:搜索什么及在哪里搜索。搜索什么通常就是指目标,而在哪里搜索是指搜索空间。搜索空间通常是指一系列状态的汇集,依次也成为状态空间。搜索问题主要是找到正确的搜索策略、分析问题,找到正确的搜索方法,才能够事半功倍。参考文献及资料:赍可荣.等人工智能清华大学出版社朱福喜.等人工智能基础教程清华大学出版社姚雪梅人工智能中A*算法的程序实现一八数码问题的演示程序电脑与信息技术2002年第2期

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!