- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章盲目搜索讲解
* * 第8章 盲目搜索 第二部分 状态空间搜索 用公式表示状态空间 首先,如何用公式来表示这些搜索问题; 第二,必须找到隐式表示大的搜索图的方法; 第三,需要用高效的算法来对这些大图进行搜索 。 有很多实际问题,其状态的搜索空间很大(甚至无穷大),对于这样的情况,我们面临: 一个典型的例子是15数码问题,它由放在一个4×4的方阵中的15个数码构成,其中的一个单元是空的,它的周边单元中的数码可以移到该单元中。此问题的任务是找到一个数码移动序列使初始的无序数码转变为一些特殊的排列。 8数码问题是一个简化版本,在一个3×3的方阵图中有8个数码。假定该问题的目标是把数码从开始状态移动到目标状态,如图所示。 示例问题: 5 7 4 6 1 3 8 2 5 6 7 4 8 3 2 1 一个给定的开始状态和一组可能的移动隐式地定义了从开始状态可到达的一个状态图。在8数码表示的状态空间中节点数是9!=362 880个(8数码状态空间刚好可以分成两个独立的图;一个图中的数码不能从其他图中的状态到达)。 在8数码问题中,我们可以想象有8x4个不同的移动,它们是:1上移、 l下移、1左移、1右移、2上移、……,等等(当然在一个给定的状态中,并不是所有的这些移动都是可能的)。 一个更精练的公式只有4个移动,即:空格左移、空格上移、空格右移和空格下移。 隐式状态空间图的组成 从开始状态可以到达的状态空间图部分是通过开始状态描述和可能在任何状态下采用的动作结果描述来隐式表示的。 因此,从理论上讲,可以把一个图的隐式表示转换为显式表示。 为此,可以产生开始节点的所有后继节点(通过那个节点应用所有可能的算子),然后再生成所有后继节点的所有后继节点,等等。 有三个基本部分参与表示隐式状态空间图: 1)一个标识开始节点的描述。这个描述是对环境初始状态建模的一些数据结构。 2)把代表环境状态的状态描述转换成代表执行动作后状态描述的转换函数。这些函数也常被叫做算子。在agent问题中,它们是动作结果的模型。当一个算子应用到一个节点时,它产生该节点的一个后继节点。 3)目标状态,可以是状态描述中的一个真假值函数,或者是和目标状态一致的状态描述的真实实例列表。 我们将学习两类主要的搜索过程。 其中之一,我们没有指定问题的任何推理信息,例如要搜索这一部分而不是另一部分,就像到目前为止的只要发现一条到目标的路径即可。这种过程被称为是盲目的。 另一种,我们指定了要解决问题的信息以帮助集中搜索。这个过程叫启发式(heuristic)搜索。 广度优先搜索 由于广度优先搜索每一步将所有可能的算子应用到一个节点,因此可把它们组成一个叫后继函数(successor function)的函数。当把后继函数应用到一个节点时,产生一个节点集,该节点集就是把所有能应用到那个节点的算子应用到该节点而产生的。一个节点的后继函数的每一次应用称为节点的扩展(expanding)。 广度优先搜索的一个特征是:当发现目标节点时,我们已经找到了到达目标的一条最短路径。 然而广度优先搜索的一个缺点是它要求产生和存储一个大小是最浅目标节点深度的指数的树。 相同代价搜索(uniform-cost search) 是广度优先搜索的一种变体,在该方法中,节点从开始节点顺着代价等高点向外扩展,而不是顺着相同深度等高线。 如果图中所有弧的代价相同(比如说等于1),那么相同代价搜索就和广度优先搜索一致。反过来,相同代价搜索可以看作是下一章要讲的启发式搜索的一个特殊情况。 广度优先和相同代价搜索方法的简要描述只给出了它们的主要思想,但是要解决其他复杂的情况则需要技术改进。比如一个节点扩展产生的节点在前面的搜索过程中已经到达过。将在下一章介绍了更一般的算法后再讨论这些方法。 深度优先搜索一次对节点应用一个算子以产生该节点的一个后继。每一个节点都留下一个标记,用来指示如果需要时所必需的附加算子。对每一个节点,必须有一个决策来决定哪个算子先用,哪个次之等等。只要一个后继产生,它的下一个后继就会被生成,一直向下传下去,等等。 为了防止从开始节点的搜索过程深度太深,需要一个深度约束(depth bound)。超过这个深度约束时不再产生后继(假定没有任何目标节点超过这个深度约束)。这种限制允许我们忽略搜索图的一部分,这些部分已经确定不能高效地到达目标节点。 深度优先或回溯搜索 *
文档评论(0)