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