人工智能搜索.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
人工智能搜索重点讲义

人工智能搜索技术初探 【摘要】本文简要概述了人工智能搜索技术,分别对盲目搜索和启发式搜索做了阐述,并且用深度优先搜索宽度优先搜索度优先搜索?? 宽度优先搜索算法(又称广度优先搜索算法)是最简单的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijksta单源最短路径算法和Prim最小生成树算法都采用了与宽度优先搜索类似的思想。 ??? 宽度优先搜索的核心思想是:从初始结点开始,应用算符生成第一层结点,检查目标结点是否在这些后继结点中,若没有,再用产生式规则将所有第一层的结点逐一扩展,得到第二层结点,并逐一检查第二层结点中是否包含目标结点。若没有,再用算符逐一扩展第二层所有结点……,如此依次扩展,直到发现目标结点为止。 宽度优先搜索基本算法如下: list[1]:=source; {加入初始结点,list为待扩展结点的表} head:=0;? {队首指针} foot:=1;??{队尾指针} REPEAT ? head:=head+1; ? FOR x:=1 to 规则数 DO ??? BEGIN ????? 根据规则产生新结点nw; ????? IF not_appear(nw,list) THEN?? {若新结点队列中不存在,则加到队尾} ???????? BEGIN ?????????? foot:=foot+1; ?????????? list[foot]:=nw; ?????????? list[foot].father:=head; ?????????? IF list[foot]=目标结点 THEN 输出; ???????? END; ?? END; UNTIL headfoot;?? {队列为空表明再无结点可扩展}? ? 2.深度优先搜索 深度优先搜索所遵循的搜索策略是尽可能“深”地搜索图。在深度优先搜索中,对于最新发现的结点,如果它还有以此为起点而未搜过的边,就沿着边继续搜索下去。当结点v的所有边都已被探寻过,搜索将回溯到发现结点v有那条边的始结点。这一过程一直进行到已发现从源结点可达的所有结点为止。如果还存在未被发现的结点,则选择其中一个作为源结点并重复以上过程,整个过程反复进行直到所有结点都被发现为止。 深度优先搜索基本算法如下{递归算法}: ? While栈不空do Begin 弹出栈顶元素; if栈顶元素=goal,成功返回并结束; Else以任何次序把栈顶元素的子女压入栈中; End While End 例1.野人过河问题 野人过河问题属于人工智能学科中的一个经典问题,问题描述如下: 有三个牧师和三个野人过河,只有一条能装下两个人的船,在河的任何一方或者船上,如果野人的人数大于牧师的人数,那么牧师就会有危险. 你能不能找出一种安全的渡河方法呢?算法分析 先来看看问题的初始状态和目标状态,假设和分为甲岸和乙岸: 初始状态:甲岸,3野人,3牧师; 乙岸,0野人,0牧师; 船停在甲岸,船上有0个人; 目标状态:甲岸,0野人,0牧师; 乙岸,3野人,3牧师; 船停在乙岸,船上有0个人 整个问题就抽象成了怎样从初始状态经中间的一系列状态达到目标状态。问题状态的改变是通过划船渡河来引发的,所以合理的渡河操作就成了通常所说的算符,根据题目要求,可以得出以下5个算符(按照渡船方向的不同,也可以理解为10个算符): 渡1野人、渡1牧师、渡1野人1牧师、渡2野人、渡2牧师 算符知道以后,剩下的核心问题就是搜索方法了,本采用深度优先搜索,通过一个findnext(…)函数找出下一步可以进行的渡河操作中的最优操作,如果没有找到则返回其父节点,看看是否有其它兄弟节点可以扩展,然后用process(…)函数递规调用findnext(…),一级一级的向后扩展。 搜索中采用的一些规则如下: 1渡船优先规则:甲岸一次运走的人越多越好(即甲岸运多人优先),同时野人优先运走;乙岸一次运走的人越少越好(即乙岸运少人优先),同时牧师优先运走 2)不能重复上次渡船操作(通过链表中前一操作比较),避免进入死循环 3)任何时候河两边的野人和牧师数均分别大于等于0且小于等于3 4)由于只是找出最优解,所以当找到某一算符(当前最优先的)满足操作条件后,不再搜索其兄弟节点,而是直接载入链表 5)若扩展某节点a的时候,没有找到合适的子节点,则从链表中返回节点a的父节点b,从上次已经选择了的算符之后的算符中找最优先的算符继续扩展b。 图-1 二、启发式搜索 所谓启发式搜索就是利用一个评估函数对状态空间中的搜索中的每一个搜索位置的价值进行评估, 决定先尝试哪一个方案, 从而可省略大量无用的搜索路径, 极大的优化普通的广度优先搜索。与普通的广度优先搜索不同的是, 启发式搜索会优先顺着有启发性和具有特定信

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档