并发式蛙跳启发式搜索算法的制作方法

文档序号:6330432阅读:1028来源:国知局
专利名称:并发式蛙跳启发式搜索算法的制作方法
技术领域
本发明属于计算机软件工程的搜索算法领域,对现有的计算机启发式搜索算法进行了重 大创新。 现有技术目前,传统的计算机网络搜索算法主要包括回溯算法,采用了一种"走不通就掉头" 思想作为其控制结构,可用于找解或所有解以及最优解。对空间的消耗较少,当其与分枝定 界法一起使用时,对于所求解在解答树中层次较深的问题有较好的效果。但是存在问题是 当后继节点与当前节点相同时,容易产生死循环。深度优先搜索算法和广度优先搜索算法, 这两种算法每次都扩展一个节点的所有子节点,而不同的是,深度优先搜索算法下一次扩展 的是本次扩展出来的子节点中的一个,而广度优先搜索算法扩展的则是本次扩展的节点的兄 弟节点。广度优先搜索算法是求解最优解的一种较好的方法,而深度优先搜索算法多用于只 要求解,并且解答树中的重复节点较多并且重复较难判断时使用。深度优先搜索算法的缺点 是当发现目标时,不能保证找到的路径是最短长度并且如果搜索的目标处于浅层但恰好在 搜索过程快要结束时才找到,必须要搜索大部分节点。广度优先搜索算法的缺点是需要很 大的空间来存储节点树。启发式搜索算法.搜索过程类似于广度优先搜索,但它会优先顺着 有启发性和具有特定信息的节点搜索下去,基本思想是假定有一个启发式(评估)函数f(n^g(n)+h(n),g(n)是对节点n的"深度"估计(即从开始节点到n的最短路径长度),h(n) 是对节点n的启发或评估。f(n)值小就表明找到了较好的节点,下一个要扩展的节点n是 f(n)值最小的节点,当节点是目标节点时过程终止。传统的启发式搜索算法存在缺点是容 易造成f值较大但符合用户搜索需求的节点的丢失,也不适合因特网大规模的搜索。A'算法: 是一个可采纳的最好优先算法。A+算法的评估函数可表示为f' (n) = g' (n) + h' (n)。在 每一步的评估中都把当前的节点和以前的节点的评估值比较得到一个"最佳的节点"。A* 算法虽然减少了节点丢失的情况,但并发性不好,而且采用了回溯的思想,也不适合大规模 大深度的分类搜索。发明内容为了克服现有的搜索算法不适合因特网大规模搜索以及搜索代价成本较高的不足,本发 明对现有的启发式搜索算法引入了并发控制、特征向量判定函数以及阈值控制的方法,提供
一种并发式蛙跳启发式搜索算法。本算法的基本思想来自于二战中美军在太平洋战场上对日军采取的"蛙跳"战术,即不 急于攻占太平洋岛链上的某些岛屿,而采用"跳跃式"方法夺占下一个岛屿,那么上一个岛 屿上的日军据点也会由于孤立无援而很容易被攻陷,这样就大大减少了战损耗费,增加了推进效率。在网络搜索过程中,首先设置一个初始训练集特征向量矩阵和阈值集合,对每个节 点提取特征向量,将其与初始训练集的特征向量矩阵进行行列式比较(具体比较方法见下面 实施方式),哪一行的值最小并且小于该行对应的阈值,就将该节点放入相应的搜索结果集 合中去;否则若行列式比较结果值大于阈值集合中的所有阈值,则该节点被抛弃,并按照一 定的跳数进行"娃跳"式跳转。对大规模空间并发搜索提供了一种可以被用户控制的新型启发式搜索技术,相关节点命 中率较高同时大大提高了搜索速度和效率,降低了搜索成本,容易编程实现,并具有一定人 工智能。也为分布式搜索提供了算法上的参考。
具体实施例方式本算法可以采用_1肌3或者〔+ +语言实现,可以嵌入到搜索引擎的爬行器开发包、应 用到大型数据库检索或者其他需要进行搜索的领域中。设初始训练集特征向量矩阵为0= !x[ij]l (iei,2,…,L; jei,2,…,M),节点特征向量 矩阵函数为r- I x[ij] |(iEl,2,...,L: jei,2,…,M),启发式(或称评估)函数为 f'(k)=g(k)+ Z[i]*h(k) ( i£l,2,...,L; keO,l,…,N-1),其中f,(k)表示第i类并发搜索, g(k)表示第k个节点到初始节点的最短路径,h(k)表示第k个节点所包含的子节点数目,判 别函数为Z[i] = |r[il]- o[il]l十Ir[i2]- o[i2]|+…+lr[iM]- o[iM] | ( i e 1, 2, . . . , L)(表示矩阵 的第i行列值相减的绝对值的和),N为搜索的最大深度。步骤如下(1) 生成一个仅包含开始节点nn的搜索图G。把m放在一个叫OPEN的有序列表中。输入初 始训练集特征向量矩阵函数r (x)和L类搜索阈值Th[i] ( i e 1, 2, . . . , L)。(2) 生成一个列表矩阵CL0SED[ij],用来保存符合搜索条件的节点。初始值为空。(3) 若0PEN为空,则退出。(4) 选择0PEN上的第一个节点,计算当前节点的Z[i]值,若Z[i]〈-Th[i],则将该节点 放入第i个CLOSED中,称该节点为k,从n(,到k的指针找到一条最短路径,若路径长度〉,, 获得第i类搜索结果,成功退出。(5) 扩展节点k,若该节点的Z[i]^ Th[i],则直接搜索与节点n邻接的子节点;若该节 点的Z[i]〉化"],则跳转到第8(10+ Z[i]朴(k)个节点进行搜索。生成k的后继节点集P,
在图G中,k的祖先节点不能在P中。在G中放置P的成员,使其成为k的后继节点。(6) 为P中每一个不在G中的成员建立一个指向k的指针。把P的这些成员加入到OPEN 中。对P的每个已在OPEN中或CLOSED中的成员节点s,如果已经找到到达s的并经过k的 最优路径,就把它的指针指向k。对于已在CLOSED中的P的每一个成员,重定向它在G中 的每一个后继,以使它们顺着到目前为止发现的最好路径指向它们的祖先节点。(7) 按照f值的递增顺序(若f值相同则根据节点在搜索树中的深度来排列),对0PEN 和CLOSED进行排序。(8) 返回第(3)步。
权利要求
1. 一种并发式蛙跳启发式搜索算法,其特征在于,在网络搜索过程中,首先设置一个初始训练集特征向量矩阵和阈值集合,对每个节点提取特征向量,将其与初始训练集的特征向量矩阵进行行列式比较(具体比较方法见下面实施方式),哪一行的值最小并且小于该行对应的阈值,就将该节点放入相应的搜索结果集合中去;否则若行列式比较结果值大于阈值集合中的所有阈值,则该节点被抛弃,并按照一定的跳数进行“蛙跳”式跳转。
2、 按照权利要求1所述的一种并发式蛙跳启发式搜索算法,其特征在于,可以采用Java 或者0+ +语言实现,设初始训练集特征向量矩阵为0= U[iJ]l(iei,2,...,L; jei,2,…,M),节点特征向量 矩阵函数为^ i x[ij] I (i e 1,2,...,L; jei,2,…,M),启发式(或称评估)函数为 f,(k)=g(k)+ Z[i]*h(k)( iei,2,…,L; keO,l,…,N-1),其中f,(k)表示第i类并发搜索, g(k)表示第k个节点到初始节点的最短路径,h(k)表示第k个节点所包含的子节点数目,判 别函数为Z[i] = |r[il]- o[il]i十Ir[i2]- o[i2]|+…+k[iM]- o[iM] | ( i e 1, 2,..., L)(表示矩阵的第i行列值相减的绝对值的和),N为搜索的最大深度;步骤如下(1) 生成一个仅包含开始节点n。的搜索图G。把n,,放在一个叫OPEN的有序列表中。输入初 始训练集特征向量矩阵函数r(x)和L类搜索阈值Th[i] ( i e 1, 2,... , L);(2) 生成一个列表矩阵CL0SED[ij],用来保存符合搜索条件的节点;初始值为空;(3) 若0PEN为空,则退出;(4) 选择0PEN上的第一个节点,计算当前节点的Z[i]值,若Z[i]OTh[i],则将该节点 放入第i个CLOSED中,称该节点为k,从n',到k的指针找到一条最短路径,若路径长度^N, 获得第i类搜索结果,成功退出;(5) 扩展节点k,若该节点的Z[i]〈^ Th[i],则直接搜索与节点n邻接的子节点;若该节 点的Z[i]〉化[1],则跳转到第§(10+ Z[i]补(k)个节点进行搜索;生成k的后继节点集P,在图G中,k的祖先节点不能在P中;在G中放置P的成员,使其成为k的后继节点;(6) 为P中每一个不在G中的成员建立一个指向k的指针把P的这些成员加入到OPEN 中;对P的每个己在OPEN中或CLOSED中的'成员节点s,如果已经找到到达s的并经过k的 最优路径,就把它的指针指向k;对于已在CLOSED中的P的每一个成员,重定向它在G中的每一个后继,以使它们顺着到目前为止发现的最好路径指向它们的袓先节点;(7) 按照f值的递增顺序(若f值相同则根据节点在搜索树中的深度来排列),对0PEN 和CLOSED进行排序;(8) 返回第(3)步。
全文摘要
并发式蛙跳启发式搜索算法,在网络搜索过程中,首先设置一个初始训练集特征向量矩阵和阈值集合,对每个节点提取特征向量,将其与初始训练集的特征向量矩阵进行行列式比较(具体比较方法见下面实施方式),哪一行的值最小并且小于该行对应的阈值,就将该节点放入相应的搜索结果集合中去;否则若行列式比较结果值大于阈值集合中的所有阈值,则该节点被抛弃,并按照一定的跳数进行“蛙跳”式跳转。对大规模空间并发搜索提供了一种可以被用户控制的新型启发式搜索技术,相关节点命中率较高同时大大提高了搜索速度和效率,降低了搜索成本,容易编程实现,并具有一定人工智能。也为分布式搜索提供了算法上的参考。
文档编号G06F17/30GK101211342SQ20061014834
公开日2008年7月2日 申请日期2006年12月29日 优先权日2006年12月29日
发明者蔡阳波, 勇 陈 申请人:上海芯盛电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1