关于启发式搜索算法的改进策略分析

时间:2022-10-18 01:44:28

关于启发式搜索算法的改进策略分析

摘要:启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无谓的搜索路径。本文拟从前人的基础上得到一个启发评价函数,并得到一种修正算法。从而改进其效率。

关键词:启发式;改进策略;搜索算法;估价函数

中图分类号:TP18 文献标识码:A文章编号:1007-9599(2012)05-0000-02

状态空间搜索,如果按专业点的说法就是将问题求解过程表现为从初始状态到目标状态寻找这个路径的过程。通俗点说,两点之间求一线路,这两点是求解的开始和问题的结果,而这一线路不一定是直线,可以是曲折的。由于求解问题的过程中分枝有很多,主要是求解过程中求解条件的不确定性,不完备性造成的,使得求解的路径很多这就构成了一个图,我们说这个图就是状态空间。问题的求解实际上就是在这个图中找到一条路径可以从开始到结果。这个寻找的过程就是状态空间搜索。

一、算法的提出

在启发式搜索中,对位置的估价是十分重要的。采用了不同的估价可以有不同的效果。我们先看看估价是如何表示的。启发中的估价是用估价函数表示的,如:f(n) = g(n) + h(n) 其中f(n) 是节点n的估价函数,g(n)是在状态空间中从初始节点到n节点的实际代价,h(n)是从n到目标节点最佳路径的估计代价[1]。在这里主要是h(n)体现了搜索的启发信息。

估价价函数确定后, 在检索时总是沿着f(n) 最小的支路进行检索直到叶子节点,即找到满意的图象为止.但其一个很大的缺陷就是他们都是在一个给定的状态空间中穷举。这在状态空间不大的情况下是很合适的算法,可是当状态空间十分大,且不预测的情况下就不可取了。他的效率实在太低,甚至不可完成。在这里就要用到修正启发式搜索算法了。

二、最短路径问题与算法效能

所谓最短路径问题有很多种意思,在这里启发式指的是一个在一个搜寻树的节点上定义的函数h(n),用于评估从此节点到目标节点最便宜的路径。启发式通常用于资讯充份的搜寻算法,例如最好优先贪婪算法与A*。最好优先贪婪算法会为启发式函数选择最低代价的节点;A*则会为g(n) + h(n)选择最低代价的节点,此g(n)是从起始节点到目前节点的路径的确实代价。如果h(n)是可接受的(admissible)意即h(n)未曾付出超过达到目标的代价,则A*一定会找出最佳解。

任何的搜寻问题中,每个节点都有b个选择以及到达目标的深度d,一个毫无技巧的算法通常都要搜寻bd个节点才能找到答案。启发式算法借由使用某种切割机制降低了分叉率(branching factor)以改进搜寻效率,由b降到较低的b'。分叉率可以用来定义启发式算法的偏序关系,例如:若在一个n节点的搜寻树上,h1(n)的分叉率较h2(n)低,则 h1(n) < h2(n)。启发式为每个要解决特定问题的搜寻树的每个节点提供了较低的分叉率,因此它们拥有较佳效率的计算能力。

三、算法的修正

专家的可贵之处,就在于他们独特的推理方式,从其宝贵的经验,我们经过一系列推算,可以得到一个新型的评价函数:

h (a,b ) = W 。+ W1f(a,b) = W。+ W 1 D (a,b)(1)(W是一种权矢量,D是一种相似度检测)

在检索树上任选K个节点,对评价函数h(a,b)中的权矢量W进行修正:

设修正后的权矢量为W’, 修正后的评价函数为h’(a,b),则有:

W'=W+F(a,b)(F代表一种欧氏距离)。

最终推出:h'(a,b)-h(a,b)=|F(a,b)|2(2)

很显然:|F(a,b)|2取值是正的,因为式中左端h'(a,b)-h(a,b)的符号取决于的值,而根据的定义可以得知:h'(a,b)比h(a,b)更加接近估价值h*(a,b)。从而可以知道:这样的修正方法是可行的。

四、找寻新的启发式算法

部分问题的解答的代价通常可以评估解决整个问题的代价,通常很合理。例如一个10-puzzle拼盘,解题的代价应该与将1到5的方块移回正确位置的代价差不多。通常解题者会先建立一个储存部份问题所需代价的模式数据库(pattern database)以评估问题。 解决较易的近似问题通常可以拿来合理评估原先问题。例如曼哈顿距离是一个简单版本的n-puzzle问题,因为我们假设可以独立移动一个方块到我们想要的位置,而暂不考虑会移到其他方块的问题。 给我们一群合理的启发式函式h1(n),h2(n),...,hi(n),而函式h(n) = max{h1(n),h2(n),...,hi(n)}则是个可预测这些函式的启发式函式[3]。 一个在1993年由A.E. Prieditis写出的程式ABSOLVER就运用了这些技术,这程式可以自动为问题产生启发式算法。ABSOLVER为8-puzzle产生的启发式算法优于任何先前存在的!而且它也发现了第一个有用的解魔术方块的启发式程式。

结束语:

常见的启发算法有:蚁群算法,遗传算法、模拟退火算法等 蚁群算法是一种来自大自然的随机搜索寻优方法,是生物界的群体启发式行为,现己陆续应用到组合优化、人工智能、通讯等多个领域。蚁群算法的正反馈性和协同性使其可用于分布式系统,隐含的并行性更使之具有极强的发展潜力[2]。通过修正其算法,使其具有更好的适用性。给程序员开发提供了便利,也提供了更好的参考价值。

参考文献:

[1]S.K. Chang, C.W.yan, Donald C. Dimtroff, and Timothy Arndt,《An Intelligent Image Database System》,IEEE Tran. On software Engineering, Vol,14,NO.5.May 1988,P681-P688

[2]吴京,景宁,陈宏盛.最佳路径的层次编码及查询算法[J].计算机学报,2000,23(2)

[3]Imielinski T,Julio C N. GPS2based Geographic Addressing,Routing and Resource Discovery.New York:ACM Press,1999.

上一篇:浅析企业计算机网络安全问题 下一篇:基于图像分割的抗压缩与抗几何攻击数字水印