CN101211342A - 并发式蛙跳启发式搜索算法 - Google Patents
并发式蛙跳启发式搜索算法 Download PDFInfo
- Publication number
- CN101211342A CN101211342A CNA2006101483442A CN200610148344A CN101211342A CN 101211342 A CN101211342 A CN 101211342A CN A2006101483442 A CNA2006101483442 A CN A2006101483442A CN 200610148344 A CN200610148344 A CN 200610148344A CN 101211342 A CN101211342 A CN 101211342A
- Authority
- CN
- China
- Prior art keywords
- node
- search
- value
- open
- heuristic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
并发式蛙跳启发式搜索算法,在网络搜索过程中,首先设置一个初始训练集特征向量矩阵和阈值集合,对每个节点提取特征向量,将其与初始训练集的特征向量矩阵进行行列式比较(具体比较方法见下面实施方式),哪一行的值最小并且小于该行对应的阈值,就将该节点放入相应的搜索结果集合中去;否则若行列式比较结果值大于阈值集合中的所有阈值,则该节点被抛弃,并按照一定的跳数进行“蛙跳”式跳转。对大规模空间并发搜索提供了一种可以被用户控制的新型启发式搜索技术,相关节点命中率较高同时大大提高了搜索速度和效率,降低了搜索成本,容易编程实现,并具有一定人工智能。也为分布式搜索提供了算法上的参考。
Description
技术领域
本发明属于计算机软件工程的搜索算法领域,对现有的计算机启发式搜索算法进行了重大创新。
现有技术
目前,传统的计算机网络搜索算法主要包括:回溯算法,采用了一种“走不通就掉头”思想作为其控制结构,可用于找解或所有解以及最优解。对空间的消耗较少,当其与分枝定界法一起使用时,对于所求解在解答树中层次较深的问题有较好的效果。但是存在问题是:当后继节点与当前节点相同时,容易产生死循环。深度优先搜索算法和广度优先搜索算法,这两种算法每次都扩展一个节点的所有子节点,而不同的是,深度优先搜索算法下一次扩展的是本次扩展出来的子节点中的一个,而广度优先搜索算法扩展的则是本次扩展的节点的兄弟节点。广度优先搜索算法是求解最优解的一种较好的方法,而深度优先搜索算法多用于只要求解,并且解答树中的重复节点较多并且重复较难判断时使用。深度优先搜索算法的缺点是:当发现目标时,不能保证找到的路径是最短长度并且如果搜索的目标处于浅层但恰好在搜索过程快要结束时才找到,必须要搜索大部分节点。广度优先搜索算法的缺点是:需要很大的空间来存储节点树。启发式搜索算法.搜索过程类似于广度优先搜索,但它会优先顺着有启发性和具有特定信息的节点搜索下去,基本思想是假定有一个启发式(评估)函数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*算法虽然减少了节点丢失的情况,但并发性不好,而且采用了回溯的思想,也不适合大规模大深度的分类搜索。
发明内容
为了克服现有的搜索算法不适合因特网大规模搜索以及搜索代价成本较高的不足,本发明对现有的启发式搜索算法引入了并发控制、特征向量判定函数以及阈值控制的方法,提供一种并发式蛙跳启发式搜索算法。
本算法的基本思想来自于二战中美军在太平洋战场上对日军采取的“蛙跳”战术,即不急于攻占太平洋岛链上的某些岛屿,而采用“跳跃式”方法夺占下一个岛屿,那么上一个岛屿上的日军据点也会由于孤立无援而很容易被攻陷,这样就大大减少了战损耗费,增加了推进效率。在网络搜索过程中,首先设置一个初始训练集特征向量矩阵和阈值集合,对每个节点提取特征向量,将其与初始训练集的特征向量矩阵进行行列式比较(具体比较方法见下面实施方式),哪一行的值最小并且小于该行对应的阈值,就将该节点放入相应的搜索结果集合中去;否则若行列式比较结果值大于阈值集合中的所有阈值,则该节点被抛弃,并按照一定的跳数进行“蛙跳”式跳转。
对大规模空间并发搜索提供了一种可以被用户控制的新型启发式搜索技术,相关节点命中率较高同时大大提高了搜索速度和效率,降低了搜索成本,容易编程实现,并具有一定人工智能。也为分布式搜索提供了算法上的参考。
具体实施方式:
本算法可以采用Java或者C++语言实现,可以嵌入到搜索引擎的爬行器开发包、应用到大型数据库检索或者其他需要进行搜索的领域中。
设初始训练集特征向量矩阵为o=|x[i j]|(i∈1,2,...L;j∈1,2,…,M),节点特征向量矩阵函数为r=|x[i j](i∈1,2,...L;j∈1,2,…,M),启发式(或称评估)函数为fi(k)=g(k)+Z[i]*h(k)(i ∈1,2,...L;k∈0,1,…,N-1),其中fi(k)表示第i类并发搜索,g(k)表示第k个节点到初始节点的最短路径,h(k)表示第k个节点所包含的子节点数目,判别函数为
Z[i]=|r[i1]-o[i1]|+|r[i2]-o[i2]|+…+|r[iM]-o[iM]|(i∈1,2,...L)(表示矩阵的第i行列值相减的绝对值的和),N为搜索的最大深度。步骤如下:
(1)生成一个仅包含开始节点n0的搜索图G。把n0放在一个叫OPEN的有序列表中。输入初始训练集特征向量矩阵函数r(x)和L类搜索阈值Th[i](i∈1,2,...L)。
(2)生成一个列表矩阵CLOSED[i j],用来保存符合搜索条件的节点。初始值为空。
(3)若OPEN为空,则退出。
(4)选择OPEN上的第一个节点,计算当前节点的Z[i]值,若Z[i]<=Th[i],则将该节点放入第i个CLOSED中,称该节点为k,从n0到k的指针找到一条最短路径,若路径长度>=N,获得第i类搜索结果,成功退出。
(5)扩展节点k,若该节点的Z[i]<=Th[i],则直接搜索与节点n邻接的子节点;若该节点的Z[i]>Th[i],则跳转到第g(k)+Z[i]*h(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值相同则根据节点在搜索树中的深度来排列),对OPEN和CLOSED进行排序。
(8)返回第(3)步。
Claims (2)
1.一种并发式蛙跳启发式搜索算法,其特征在于,在网络搜索过程中,首先设置一个初始训练集特征向量矩阵和阈值集合,对每个节点提取特征向量,将其与初始训练集的特征向量矩阵进行行列式比较(具体比较方法见下面实施方式),哪一行的值最小并且小于该行对应的阈值,就将该节点放入相应的搜索结果集合中去;否则若行列式比较结果值大于阈值集合中的所有阈值,则该节点被抛弃,并按照一定的跳数进行“蛙跳”式跳转。
2.按照权利要求1所述的一种并发式蛙跳启发式搜索算法,其特征在于,可以采用Java或者C++语言实现,
设初始训练集特征向量矩阵为o=|x[i j]|(i∈1,2,...L;j∈1,2,…,M),节点特征向量矩阵函数为r=|x[ij]|(i∈1,2,...L;j∈1,2,…,M),启发式(或称评估)函数为fi(k)=g(k)+Z[i]*h(k)(i∈1,2,...L;k∈0,1,…,N-1),其中fi(k)表示第i类并发搜索,g(k)表示第k个节点到初始节点的最短路径,h(k)表示第k个节点所包含的子节点数目,判别函数为
Z[i]=|r[i1]-o[i1]|+|r[i2]-o[i2]|+…+|r[iM]-o[iM]|(i∈1,2,...L)(表示矩阵的第i行列值相减的绝对值的和),N为搜索的最大深度;步骤如下:
(1)生成一个仅包含开始节点n0的搜索图G。把n0放在一个叫OPEN的有序列表中。输入初始训练集特征向量矩阵函数r(x)和L类搜索阈值Th[i](i∈1,2,...L);
(2)生成一个列表矩阵CLOSED[ij],用来保存符合搜索条件的节点;初始值为空;
(3)若OPEN为空,则退出;
(4)选择OPEN上的第一个节点,计算当前节点的Z[i]值,若Z[i]<=Th[i],则将该节点放入第i个CLOSED中,称该节点为k,从n0到k的指针找到一条最短路径,若路径长度>=N,获得第i类搜索结果,成功退出;
(5)扩展节点k,若该节点的Z[i]<=Th[i],则直接搜索与节点n邻接的子节点;若该节点的Z[i]>Th[i],则跳转到第g(k)+Z[i]*h(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值相同则根据节点在搜索树中的深度来排列),对OPEN和CLOSED进行排序;
(8)返回第(3)步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2006101483442A CN101211342A (zh) | 2006-12-29 | 2006-12-29 | 并发式蛙跳启发式搜索算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2006101483442A CN101211342A (zh) | 2006-12-29 | 2006-12-29 | 并发式蛙跳启发式搜索算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101211342A true CN101211342A (zh) | 2008-07-02 |
Family
ID=39611374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006101483442A Pending CN101211342A (zh) | 2006-12-29 | 2006-12-29 | 并发式蛙跳启发式搜索算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101211342A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716522A (zh) * | 2019-11-04 | 2020-01-21 | 南京理工大学 | 基于任意时间a*启发式搜索的制造企业车间调度优化方法 |
CN111026713A (zh) * | 2016-08-03 | 2020-04-17 | 杭州数梦工场科技有限公司 | 一种搜索系统、数据搜索方法及运行时间确定方法 |
-
2006
- 2006-12-29 CN CNA2006101483442A patent/CN101211342A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026713A (zh) * | 2016-08-03 | 2020-04-17 | 杭州数梦工场科技有限公司 | 一种搜索系统、数据搜索方法及运行时间确定方法 |
CN111026713B (zh) * | 2016-08-03 | 2023-03-31 | 杭州数梦工场科技有限公司 | 一种搜索系统、数据搜索方法及运行时间确定方法 |
CN110716522A (zh) * | 2019-11-04 | 2020-01-21 | 南京理工大学 | 基于任意时间a*启发式搜索的制造企业车间调度优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Thabtah et al. | MCAR: multi-class classification based on association rule | |
Li et al. | An opposition-based differential evolution algorithm for permutation flow shop scheduling based on diversity measure | |
CN112671029A (zh) | 一种含分布式电源的配网多阶段故障恢复方法 | |
CN108259929A (zh) | 一种视频活跃期模式的预测及缓存方法 | |
García-Hernández et al. | A new algorithm for fast discovery of maximal sequential patterns in a document collection | |
Xu et al. | A survey on dynamic neural networks for natural language processing | |
Ding et al. | Recurrent graph syntax encoder for neural machine translation | |
CN110083748A (zh) | 一种基于自适应动态规划与蒙特卡罗树搜索的搜索方法 | |
CN108629400A (zh) | 一种基于Levy搜索的混沌人工蜂群算法 | |
CN104268629A (zh) | 一种基于先验信息和网络固有信息的复杂网络社区检测方法 | |
Li et al. | Ant colony optimization for the traveling salesman problem based on ants with memory | |
CN101211342A (zh) | 并发式蛙跳启发式搜索算法 | |
CN105843907A (zh) | 一种内存索引结构-距离树的构建及基于距离树的相似性连接算法 | |
Fowler et al. | Branching constraint satisfaction problems for solutions robust under likely changes | |
Zhuge et al. | An automatic semantic relationships discovery approach | |
Mangaravite et al. | Improving the efficiency of a genre-aware approach to focused crawling based on link context | |
Bornea et al. | Double index nested-loop reactive join for result rate optimization | |
Chun et al. | Inter-dependent lstm: Baseball game prediction with starting and finishing lineups | |
Wang et al. | A Reliability-oriented Evolution Method of Software Architecture Based on Contribution Degree of Component. | |
CN102662637A (zh) | 超长指令字处理器指令发射方法 | |
ŞEVKLİ et al. | Discrete particle swarm optimization for the team orienteering problem | |
Li-feng et al. | Research on honeypot information fusion based on game theory | |
Beaumont | Scheduling strategies and speculative work | |
Teitelman et al. | Stealing black-box functionality using the deep neural tree architecture | |
Lee et al. | A novel ontology for computer Go knowledge management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080702 |