更新时间:2022-08-25 12:51
在启发式搜索中,用于评价节点重要性的函数叫做评价函数。评价函数的主要任务就是估计等搜索结点的重要程度,以确定结点的优先级程度。评价函数的一般形式为f(x)=g(x)+h(x); 其中h(x)被称为启发函数,构造和选择合适的启发函数h(x)是启发式搜索的关键。
在启发式搜索过程中,关键的一步是如何确定要扩展的节点,不同的确定方法就形成不同的搜索策略。如果在确定节点时能充分利用与问题求解有关的特性信息,估计出节点的重要性,就能够在搜索时选择重要性较高的节点进行扩展,从而求得最优解。而启发式搜索正是这种利用问题自身的某些特性信息,指导搜索朝着最有希望有方向前进的一种方法。
在启发式搜索中,用于评价节点重要性的函数叫做评价函数。评价函数的主要任务就是估计等搜索结点的重要程度,以确定结点的优先级程度。评价函数的一般形式为
其中 为初始节点 到节点x已经实际付出的代价。当希望有较高的搜索效率,且只关心到达目标节点的路径时,g(x)可以忽略,但此时会影响到搜索的完备性。h(x)为节点x到目标节点Sg的最优路径的估计代价,它体现了总是的启发性信息,又称为启发函数,其形式要根据总是的特性而定。启发函数h(x)所携带的启发性的信息越多,搜索时扩展的节点数就越少,搜索的效率就越高。因此在确定f(x)时,要使得g(x)与h(x)各占适当的比例。
在实际问题求解时,g(x)可以根据已经搜索的节点信息计算出来,而启发函数h(x)依赖于人们的经验。它来源于我们对问题的某些特性的认识。
构造和选择合适的启发函数h(x)是启发式搜索的关键。
在构造h(x) 时,应满足两个方面的要求:
1)启发函数简单易算;
2)函数要有较高的精确度,能够反应问题的实际情况。
在实际问题中,这两个方面的要求是相互制约的,很难同时得到满足。若将启发函数设计得简单易算,那么此函数的精度往往不会很高,产生的误差也大;若将启发函数设计得有较高的精确度,那么函数会很复杂,计算也需较长时间。所以构造一个好的启发函数,要综合考虑这两个方面的因素。
在启发式图搜索策略中,结点n的评价函数f(n)通常表示成:f(n)=g(n)十h(n),其中g(n)是对从初始结点到结点n的一条最佳路径上的耗散值g*(n)的估计;h(n)是对从结点n到目标结点的一条最佳路径上的耗散值h*(n)的估计。值得指出的是,g(n)通常是比较容易计算的。要找到一条最佳路径,充分条件是启发式图搜索策略必须使每个结点n的h(n)取h*(n)的下界,即h(n)<=h*(n)。当h(n)=0时,启发式图搜索策略运化为广度优先算法;当h*(n)=h(n)时,启发式图搜索策略所扩展的每一个结点均在最佳路径上,因而此种情况最好;当某些结点n满足h(n)>h*(n)时,启发式图搜索策略未必能找到一条最佳路径。可是在许多实际问题中,寻找一个逼近h*(n)且小于或等于h*(n)的h(n)函数非常困难。一般地,找到一个比较合适的求解路径就令人满足了。因此放宽h(n)应满足的充分条件就成为必要。为了避免因放宽条件而导致图搜索策略扩展过多的结点,从而造成接近于宽度优先搜索那样的低效率,应使h(n)值与h*(n)值尽可能接近。
考虑要求解的问题领域空间:
1).可能的状态集S1:
2).规则集R1:它能将空间中的一个状态转换成领域空间中的另一个状态
定义问题空间有向图G=。在图G中,一个结点表示领域空间中的一个状态,则v表示状态集s所对应的结点集,若一状态s经过一条规则变换成另一状态t,则s和t对应的结点之间有一条从s指向t的有向边,该边的权就是应用该规则的费用即规则应用耗散值。而E是所有这样的有向边的集合。于是,要求解的问题可表述成:在图G中寻找一条从初始结点(初态)到目标结点(目标状态)的比较合适的路径。
再考虑相似问题领域空间:
1).可能的状态集S2:
2).规则集R2:该规则集与要求解的问题领域空间中的规则集R,在某种程度上有其相似性,且能将原领域空间的一个状态转换成相似问题空间中的另一个状态。
因此,所谓相似问题仅仅是指求解原问题所用规则的不同,且原问题求解所用的规则集与相似问题求解所用的规则在某种程度上(如规则使用条件的相以性,规则使用效果的相似性)相似。相似问题求解所用的规则一般通过减弱(或加强)原问题求解所用的规则的使用条件而得到。
启发式图搜索策略的本质就是依据启发信息来选择结点扩展,因此可以依据诸启发信息来建立h(n)函数。
设 ,其中, 是结点n的第i个启发信息值, 是与其对应项有关的权。对线性函数来说,可以使用最小二乘法确定权重。
函数逼近法是基于数学表达式逼近h*(n),而相似问题逼近法则基于将一个问题转化为另一个问题,且用高效率的算法求解转化后的问题所得到角最佳路径上的耗散值来通近h*(n)。由于h(n)的计算工作量是影响启发能力的一个至关重要的因素,因此,在用相似问题逼近法时,所设计的求解相似问题的算法一定要高效率且运行时间很短,在用函数逼近法时,h(n)函数的数学表达式一定要易于计算。
一个启发式算法是否能被采纳,要看采用该算法能否达到预期的目标。比如说在图搜索中,如果存在从初始节点到目标节点解答路径的情况下,一个算法能够找到最小代价的解答路径,则称该算法具有可采纳性。否则就可能找不到目标节点,或者找到的不是代价最小的解答路径,从而该算法可能失去其可采纳性。如在八数码游戏中,广度优先搜索算法,尽管其搜索空间非常大,效率非常低,但总能找到最小的解答路径,所以该算法是可采纳的。
我们用h(n)接近h*(n)的程度来衡量希望函数强弱.当h(n)< h*(n)且差距大时,称希望函数过弱,易于产生较大的搜索空间。比如当h(n)= 0时,希望函数最弱,从而产生了最大的搜索空间(广度优先搜索)。但是,当h(n)≥ h*(n)时,希望函数过强,又可能使算法失去可采纳性。
从图1可以看出,当希望函数对评价函数值的影响过强时,搜索将向纵深方向进行。当希望函数对评价函数值的影响过弱时,搜索将向广度水平方向进行。