人工智能所要解决的问题大部分是结构不良或非结构化的问题,对这样的问题一般不存在成熟的求解算法可以使用。对于给定的问题,智能系统(或智能Agent)的行为一般是找到能够达到所希望目标状态的动作序列,并使其所付出的代价最小,性能最好。基于给定的问题,问题求解的第一步是目标的表示。
搜索就是找到智能Agent的动作序列的过程,搜索算法的输入是给定的问题,输出是表示为动作序列的方案。一旦有了方案,就可以执行该方案所给出的动作了。这一阶段称为执行阶段。因此,智能Agent求解一个问题主要包括三个阶段:目标表示、搜索和执行。
一般给定一个问题就是确定该问题的一些基本信息,Agent可以据此做出决定。一个问题由以下4个部分组成:
(1)初始状态集合:定义了Agent所处的环境。
(2)操作符集合:把一个问题从一个状态交换为另一个状态的动作集合。
(3)目标检测函数:Agent用来确定一个状态是不是目标。
(4)路径费用函数:对每条路径赋予一定费用的函数。
其中初始状态集合和操作符集合定义了问题的搜索空间。
在人工智能中,搜索问题一般包括两个重要的问题:搜索什么?在哪里搜索?搜索什么通常指的就是目标,而在哪里搜索就是“搜索空间”。搜索空间通常是指一系列状态的汇集,因此也称为状态空间。[1]和通常的搜索空间不同,人工智能中大多数问题的状态空间在问题求解之前不是全部知道的。
所以,人工智能中的搜索可以分成两个阶段:状态空间的生成阶段和在该状态空间中对所求解问题状态的搜索。由于一个问题的整个空间可能会非常的大,在搜索之前生成整个空间会占用太大的存储空间。为此,状态空间一般是逐渐扩展的,“目标”状态是在每次扩展的时候进行搜索的。(www.xing528.com)
一般搜索可以根据是否使用启发式信息分为盲目搜索和启发式搜索。也可以根据问题的表示方式分为状态空间搜索和与/或树搜索。状态空间搜索是指用状态空间法来求解问题所进行的搜索。与/或树搜索是指用问题归约方法来求解问题时所进行的搜索。状态空间法和问题归约法是人工智能中最基本的两种问题求解方法,状态空间表示法和与/或树表示法则是人工智能中最基本的两种问题表示方法。
盲目搜索一般是指从当前的状态到目标状态需要走多少步或者每条路径的花费并不知道,所能做的只是可以区分出哪个是目标状态。因此,它一般是按预定的搜索策略进行搜索。由于这种搜索总是按预定的路线进行,没有考虑到问题本身的特性,所以这种搜索具有很大的盲目性,效率不高,不便于复杂问题的求解。启发式搜索是在搜索过程中加入了与问题有关的启发性信息,用于指导搜索朝着最有希望的方向前进,加速问题的求解并找到最优解。显然盲目搜索不如启发式搜索效率高,但是由于启发式搜索需要和问题本身特性有关的信息,而对于很多问题这些信息很少,或者根本就没有,或者很难抽取,所以盲目搜索仍然是很重要的搜索策略。
在搜索问题中,主要的工作是找到正确的搜索策略。搜索策略可以通过下面四个准则来评价:
(1)完备性:如果存在一个解答,该策略是否保证能够找到?
(2)时间复杂性:需要多长时间可以找到解答?
(3)空间复杂性:执行搜索需要多少存储空间?
(4)最优性:如果存在不同的几个解答,该策略是否可以发现最高质量的解答?
搜索策略反映了状态空间或问题空间扩展的方法,也决定了状态或问题的访问顺序。搜索策略的不同,人工智能中的搜索问题的命名也不同。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。