文档介绍:的启发式搜索算法库的设计与实现论文导读:启发式搜索是要求把解决问题具体领域的知识加进搜索算法中,控制搜索过程,以提高算法效率的搜索方法。 ponent Object Model ,组件对象模型) ,是一种以组件为发布单元的对象模型,这种模型使各软件组件可以用一种统一的方式交互。是语言无关的, 技术建立的算法库组件也是通用的。关键词: COM, 启发式搜索, 算法库思想来设计库, 组件,来高效开发算法。 1 技术 启发式搜索启发式搜索是要求把解决问题具体领域的知识加进搜索算法中,控制搜索过程,以提高算法效率的搜索方法。启发信息按其用途可分为下列 3 种: (1) 用于决定要扩展的下一个节点,以免像在宽度优先或深度优先搜索中那样盲目地扩展。(2) 在扩展一个节点的过程中,用于决定要生成哪一个或哪几个后继节点,以免盲目地同时生成所有可能的节点。(3) 用于决定某些应该从搜索树中抛弃或修剪的节点。论文检测。 1. (Component Object Model ,组件对象模型) ,是一种以组件为发布单元的对象模型,这种模型使各软件组件可以用一种统一的方式交互。 COM 既提供了组件之间进行交互的规范,也提供了交互的环境。 COM 技术是由面向对象技术发展起来, COM 技术目前也是解决软件危机的一种有效的方法, COM 技术也可以认为是一种软件设计的分析方法或框架。组件是以二进制形式发布,所以在组件是可扩展的,通过使用聚合和包容技 组件的功能,使其支持更多的应用。组件又是地域无关的, 组件,达到一种分布式应用。 1. 是语言无关的, 技术建立的算法库组件也是通用的。 COM 又是可扩展的,只要经过良好的设计和规划,算法开发者可以利用包 组件的功能扩展,又由于对于搜索算法来说,往往计算量是很大的, 技术提供的分布式计算能力,可以很容易实现算法的分布式计算。这样充分利用了络上的计算机资源。 2 的启发式搜索算法库的设计 启发式搜索算法的分析目前各种启发式搜索算法变体很多,即使是完全不同的算法,也或多或少存在某些方面的相似性。由于这种特性,本文不是直接一个一个算法的实现,而是利用模型化的方法对整个算法库建模。对算法库建模即是对这些算法进行建模,找出一种分析算法的方案。这里以 A* 算法和博弈树算法为例。观察这两个算法可以发现, A* 算法和博弈树算法,其组成元素是( 1) open 表( 2) close d 表。对应的主要操作是:( 1 )循环的从 open 表中拿出一个节点放入 closed 表中;( 2 )判断结束状态是依赖于当时 open 表和 close d 表的状态;( 3 )还有一个操作是比较。它们不同之处就是一个 A* 算法往往对排序使用的是启发式函数和博弈树算法使用的直接估计节点的倒推值评估是不同的形式的。论文检测。其实这些相视之处不仅存在 A* 和博弈树算法中,其他启发式搜索算法也都有这些相似之处。因此在设计启发式搜索算法时,可以采用统一的数据结构来实现 open 表和 closed 表,以及提取它们共有的操作,如循环从 open 表中取一个元素到 closed 中等等。分析得到,在启发式搜索算法中公有的部分为:( 1) open 表和 closed 表的数据结构;( 2 )节点的扩展;( 3 )中间节点的数据结构;( 4