基于图的在线分析引擎实现方法及系统转让专利

申请号 : CN202210975467.2

文献号 : CN115309947B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王绪刚郑雪舟

申请人 : 北京欧拉认知智能科技有限公司

摘要 :

本发明公开了一种基于图的在线分析引擎实现方法及系统,方法包括:以点表达实体、以边表达关系,将业务模型抽象为图,将属性基于列进行存储;根据边集的特征通过哈希链表或邻接表实现,根据属性数据的特征建立哈希索引、位图索引或B+Tree索引;按照向量化计算方式对属性数据进行循环计算,并按列组织表示为成列向量;基于点和边、根据属性数据来寻找路径的起始点、中间点、终点或结束边,并通过索引迭代确定最优执行方式;针对不同的分析函数,按照最优执行方式进行操作封装,循环迭代分析函数以得到分析结果。通过本发明的技术方案,实现了数据分析的加速,使得在线分析具备良好的效率,并具有良好的性能优势,且资源开销较小。

权利要求 :

1.一种基于图的在线分析引擎实现方法,其特征在于,包括:以点表达实体、以边表达关系,将业务模型抽象为图,将属性基于列进行存储;

根据边集的特征通过哈希链表或邻接表实现,根据属性数据的特征建立哈希索引、位图索引或B+Tree索引;

按照向量化计算方式对属性数据进行循环计算,并按列组织表示为成列向量,每个列向量对应一整块连续数据;

基于点和边、根据属性数据对应条件的指定方向来寻找路径的起始点、中间点、终点或结束边,并通过索引迭代确定最优执行方式;

针对不同的分析函数,按照最优执行方式进行操作封装,循环迭代所述分析函数以得到分析结果;

所述最优执行方式通过索引选择性中的最大值来确定,所述索引选择性为不重复的索引值基数与表记录总行数的比值,所述索引选择性的取值范围为0 1,所述索引选择性越大~则索引价值越大;

若属性数据存在唯一识别的情况,则建立哈希索引,若属性数据稠密、所述基数小,则建立位图索引,若属性数据稀疏、所述基数大,则建立B+Tree索引。

2.根据权利要求1所述的基于图的在线分析引擎实现方法,其特征在于,所述哈希索引、所述位图索引和/或所述B+Tree索引基于磁盘保存。

3.根据权利要求1所述的基于图的在线分析引擎实现方法,其特征在于,采用并行计算方式,执行对属性数据的向量化计算过程。

4.一种基于图的在线分析引擎系统,其特征在于,应用如权利要求1至3中任一项所述的基于图的在线分析引擎实现方法,包括:图模型构建模块,用于以点表达实体、以边表达关系,将业务模型抽象为图,将属性基于列进行存储;

索引建立模块,用于根据边集的特征通过哈希链表或邻接表实现,根据属性数据的特征建立哈希索引、位图索引或B+Tree索引;

列向量计算模块,用于按照向量化计算方式对属性数据进行循环计算,并按列组织表示为成列向量,每个列向量对应一整块连续数据;

最优执行确定模块,用于基于点和边、根据属性数据对应条件的指定方向来寻找路径的起始点、中间点、终点或结束边,并通过索引迭代确定最优执行方式;

封装分析结果模块,用于针对不同的分析函数,按照最优执行方式进行操作封装,循环迭代所述分析函数以得到分析结果;

其中,所述最优执行方式通过索引选择性中的最大值来确定,所述索引选择性为不重复的索引值基数与表记录总行数的比值,所述索引选择性的取值范围为0 1,所述索引选择~性越大则索引价值越大;

若属性数据存在唯一识别的情况,则建立哈希索引,若属性数据稠密、所述基数小,则建立位图索引,若属性数据稀疏、所述基数大,则建立B+Tree索引。

5.根据权利要求4所述的基于图的在线分析引擎系统,其特征在于,所述哈希索引、所述位图索引和/或所述B+Tree索引基于磁盘保存。

6.根据权利要求4所述的基于图的在线分析引擎系统,其特征在于,采用并行计算方式,执行对属性数据的向量化计算过程。

说明书 :

基于图的在线分析引擎实现方法及系统

技术领域

[0001] 本发明涉及数据分析技术领域,尤其涉及一种基于图的在线分析引擎实现方法以及一种基于图的在线分析引擎系统。

背景技术

[0002] 图(Graph)是用于表示对象之间关联关系的一种抽象数据结构,使用顶点(Vertex)和边(Edge)进行描述:顶点表示对象,边表示对象之间的关系。点和边上可以通过属性(Attribute)提供更加丰富的信息,通过将点边化的方式结合属性将知识结构化地保存,因此具有天然的可解释性,因而在计算机领域备受推崇。
[0003] OLAP(在线分析处理)是许多商业智能、数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持。在实际的商业分析中,OLAP更多的是指对数据分析的一种解决方案。一般来说,根据建模方式OLAP可分为3种类型:关系型实时分析系统(Relational‑OLAP,ROLAP),多维实时分析系统(Multidimensional‑OLAP,MOLAP),混合型实时分析系统(Hybrid‑OLAP,HOLAP)。
[0004] 现有的OLAP系统存在一些不足:
[0005] 1、实时性问题,现有的OLAP系统一类通常的解决方案是通过预计算实现,具有数据延时性和计算延时性的问题。
[0006] 2、数据冗余问题,现有的OLAP系统流行的解决方案是使用多维数组来存储所有的维度数据,需要额外的存储空间,并且存在大量的稀疏数据。
[0007] 3、效率问题,传统的OLAP系统往往体系结构较旧,很难在功能和性能之间取得平衡。

发明内容

[0008] 针对上述问题,本发明提供了一种基于图的在线分析引擎实现方法及系统,通过基于图的在线分析场景,提供基于混合索引的传统分析和图分析的融合解决方案,将Graph、Vertex、Edge、Attribute、Index等核心概念模型通过配置文件灵活指定,通过索引结构实现数据分析的加速,GOLAP的高效实现使得基于图的在线分析具备良好的效率,并具有良好的性能优势,且资源开销较小。
[0009] 为实现上述目的,本发明提供了一种基于图的在线分析引擎实现方法,包括:
[0010] 以点表达实体、以边表达关系,将业务模型抽象为图,将属性基于列进行存储;
[0011] 根据边集的特征通过哈希链表或邻接表实现,根据属性数据的特征建立哈希索引、位图索引或B+Tree索引;
[0012] 按照向量化计算方式对属性数据进行循环计算,并按列组织表示为成列向量,每个列向量对应一整块连续数据;
[0013] 基于点和边、根据属性数据对应条件的指定方向来寻找路径的起始点、中间点、终点或结束边,并通过索引迭代确定最优执行方式;
[0014] 针对不同的分析函数,按照最优执行方式进行操作封装,循环迭代所述分析函数以得到分析结果。
[0015] 在上述技术方案中,优选地,所述根据属性数据的特征建立哈希索引、位图索引或B+Tree索引的具体过程包括:
[0016] 若属性数据存在唯一识别的情况,则建立哈希索引,若属性数据稠密、基数较小,则建立位图索引,若属性数据稀疏、基数较大,则建立B+Tree索引。
[0017] 在上述技术方案中,优选地,所述最优执行方式通过索引选择性中的最大值来确定,所述索引选择性为不重复的索引值基数与表记录总行数的比值,所述索引选择性的取值范围为0~1,所述索引选择性越大则索引价值越大。
[0018] 在上述技术方案中,优选地,所述哈希索引、所述位图索引和/或所述B+Tree索引基于磁盘保存。
[0019] 在上述技术方案中,优选地,采用并行计算方式,执行对属性数据的向量化计算过程。
[0020] 本发明还提出一种基于图的在线分析引擎系统,应用如上述技术方案中任一项公开的基于图的在线分析引擎实现方法,包括:
[0021] 图模型构建模块,用于以点表达实体、以边表达关系,将业务模型抽象为图,将属性基于列进行存储;
[0022] 索引建立模块,用于根据边集的特征通过哈希链表或邻接表实现,根据属性数据的特征建立哈希索引、位图索引或B+Tree索引;
[0023] 列向量计算模块,用于按照向量化计算方式对属性数据进行循环计算,并按列组织表示为成列向量,每个列向量对应一整块连续数据;
[0024] 最优执行确定模块,用于基于点和边、根据属性数据对应条件的指定方向来寻找路径的起始点、中间点、终点或结束边,并通过索引迭代确定最优执行方式;
[0025] 封装分析结果模块,用于针对不同的分析函数,按照最优执行方式进行操作封装,循环迭代所述分析函数以得到分析结果。
[0026] 在上述技术方案中,优选地,所述索引建立模块建立索引的具体过程包括:
[0027] 若属性数据存在唯一识别的情况,则建立哈希索引,若属性数据稠密、基数较小,则建立位图索引,若属性数据稀疏、基数较大,则建立B+Tree索引。
[0028] 在上述技术方案中,优选地,所述最优执行方式通过索引选择性中的最大值来确定,所述索引选择性为不重复的索引值基数与表记录总行数的比值,所述索引选择性的取值范围为0~1,所述索引选择性越大则索引价值越大。
[0029] 在上述技术方案中,优选地,所述哈希索引、所述位图索引和/或所述B+Tree索引基于磁盘保存。
[0030] 在上述技术方案中,优选地,采用并行计算方式,执行对属性数据的向量化计算过程。
[0031] 与现有技术相比,本发明的有益效果为:通过基于图的在线分析场景,提供基于混合索引的传统分析和图分析的融合解决方案,将Graph、Vertex、Edge、Attribute、Index等核心概念模型通过配置文件灵活指定,通过索引结构实现数据分析的加速,GOLAP的高效实现使得基于图的在线分析具备良好的效率,并具有良好的性能优势,且资源开销较小。

附图说明

[0032] 图1为本发明一种实施例公开的基于图的在线分析引擎实现方法的流程示意图;
[0033] 图2为本发明一种实施例公开的邻接表的有向图示例图;
[0034] 图3为本发明一种实施例公开的邻接表的实例示意图;
[0035] 图4为本发明一种实施例公开的B+Tree的实例示意图;
[0036] 图5为本发明一种实施例公开的bitmap位图索引的实例示意图;
[0037] 图6为本发明一种实施例公开的哈希表的实例示意图;
[0038] 图7为本发明一种实施例公开的向量化并行计算方式的示意图;
[0039] 图8为本发明一种实施例公开的基于图的在线分析引擎系统的模块示意图。
[0040] 图中,各组件与附图标记之间的对应关系为:
[0041] 1.图模型构建模块,2.索引建立模块,3.列向量计算模块,4.最优执行确定模块,5.封装分析结果模块。

具体实施方式

[0042] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043] 下面结合附图对本发明做进一步的详细描述:
[0044] 如图1所示,根据本发明提供的一种基于图的在线分析引擎实现方法,包括:
[0045] 以点表达实体、以边表达关系,将业务模型抽象为图,将属性基于列进行存储;
[0046] 根据边集的特征通过哈希链表或邻接表实现,根据属性数据的特征建立哈希索引、位图索引或B+Tree索引;
[0047] 按照向量化计算方式对属性数据进行循环计算,并按列组织表示为成列向量,每个列向量对应一整块连续数据;
[0048] 基于点和边、根据属性数据对应条件的指定方向来寻找路径的起始点、中间点、终点或结束边,并通过索引迭代确定最优执行方式;
[0049] 针对不同的分析函数,按照最优执行方式进行操作封装,循环迭代分析函数以得到分析结果。
[0050] 在该实施方式中,通过基于图的在线分析场景,提供基于混合索引的传统分析和图分析的融合解决方案,将Graph、Vertex、Edge、Attribute、Index等核心概念模型通过配置文件灵活指定,通过索引结构实现数据分析的加速,GOLAP的高效实现使得基于图的在线分析具备良好的效率,并具有良好的性能优势,且资源开销较小。
[0051] 具体地,图结构的创建,将业务模型抽象为图,实体用点表达,关系用边表达,属性基于列存储实现。图模型结构中存在若干集合,包括点集、边集和属性集,通常分析场景下是基于这三类集合的独自或整合进行的,尤为关键的是边集,它的实现是图分析的核心基础。
[0052] 根据图的稀疏和稠密情况,将边集分为两类实现,在稀疏的情况下,通过哈希链表实现,而在稠密的情况下,直接使用邻接表实现。哈希表的情况下,点的标识做为key,将所有出边做成链表做为value,会浪费一部分空间,但由于数据稀疏,而且可以动态调整,整体空间消耗是比较理想的。邻接表的情况下,访问速度是无损的O(1),可以有最佳的性能。
[0053] 在上述实施方式中,优选地,索引的建立过程中,考虑到本身图规模问题,优先选择基于磁盘保存索引结构。对于属性数据有唯一识别的情况,可以建立哈希索引,考虑到数据是动态变化的,选择一种线性哈希结构。对于属性数据比较稠密的、基数较小的,建立位图索引,可以花费较小的代价进行条件查找以及逻辑运算。对于属性数据比较稀疏的、基数较大的,建立B+Tree索引,可以获取较为平衡的性能。
[0054] 进一步地,在上述实施方式中,优选地,根据上层收入的条件,可以采用操作预估的方法,评估索引组合的性能开销,选择操作数、时间消耗最合适的索引组合,以求性能最佳。选择索引组合的目的,是找到一个最优的执行方案,并用最小的代价去执行。扫描行数是影响执行代价的因素之一。索引选择性=基数/总行数,指的是不重复的索引值(基数)和表记录数的比值。选择性是索引筛选能力的一个指标,索引的取值范围是0~1,当选择性越大,索引价值也就越大。最优执行方式通过索引选择性中的最大值来确定。索引组合后的结果还需根据情况确定是否需要走二次过滤逻辑。
[0055] 属性按列存储的模式组织,按照向量化计算的方式,对一组数据做简单的循环计算,同时数据按照列组织形式表示成列向量,每个列向量对应的一整块连续数据,进而可以批量读入缓存以及进行批量处理,这就可以大大提高指令、数据的缓存命中率,进而提高CPU的执行效率。基于列存储,我们只需要获取需要列的数据。基于向量化执行,每层算子获取的都是表示成列向量的一组元组,并对每个列向量进行批量计算。
[0056] 在图上的分析,分为点分析、边分析、组合分析,单独的点边分析应用索引加速即可。组合分析的起始条件是点或边,点和边会根据属性条件指定方向找到中间点、进一步往前走到待分析的终点或结束边。通过索引可以快速找到路径的起始数据,然后根据边集的哈希活邻接表在图上进行路径迭代,针对不同的分析函数进行操作封装,循环迭代应用分析函数得到最后的分析结果。
[0057] 其中,如图2和图3所示,邻接表(Adjacency List),就是把从同一个顶点发出的边链接在同一个称为边链表的单链表中。边链表的每个结点代表一条边,称为边结点。每个边结点有2个域:该边终点的序号,以及指向下一个边结点的指针。在邻接表中,还需要一个用于存储顶点信息的顶点数组。也正因为各个链表的头节点存储的是各个顶点,因此各链表在存储临界点数据时,仅需存储该邻接顶点位于数组中的位置下标即可。具体地,邻接表具有以下特征:
[0058] ①主要是基于有向图,在无向图中,每条边在邻接表中出现了两次,会有2倍的开销。
[0059] ②采用邻接表表示对于空间上会有一定浪费,因为不存在出边的顶点仍然需要用空表达。
[0060] ③在邻接表中,给定一顶点,能很容易地找出它的所有邻边,因为只需要读取它的邻接表。
[0061] ④在有向图的邻接表表示中,求一个给定顶点的出度只需要计算其邻接表中的结点个数;但求其顶点的入度则需要遍历全部的邻接表。因此,也可以采用逆邻接表的存储方式来加速求解给定顶点的入度。
[0062] ⑤图的邻接表表示并不唯一,因为在每个顶点对应的单链表中,各边结点的链表次序可以是任意的,它取决于建立邻接表的算法及边的输入次序。
[0063] 其中,索引的实现,优先选择基于磁盘这种成本低廉的介质。
[0064] 如图4所示,B+Tree是多路平衡树,特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。
[0065] B+Tree基本特征:要实现一个数据结构,首先得明白它是个什么,结构有基本特点,有哪些性质。
[0066] ①多路节点;
[0067] ②一个树节点中,有多个数据,数据个数大于等于N时,分裂成三部分:左、中、右,这三部分变成三个树节点,中间树节点成为左右两部分的父节点;
[0068] ③所有叶子节点形成一条有序链表;
[0069] ④所有数据都在叶子节点上。
[0070] 大体结构设计
[0071] ①一个树节点看作一个类;
[0072] ②树节点类里面有多个数据元素节点,数据元素看作一个类;
[0073] ③树节点类中有父节点指针;
[0074] ④数据元素节点中有左右子树节点指针。本发明所设计的是同一个树节点内,左边第一个元素节点左右可能都有树节点,其他元素节点只有右边有子树节点;
[0075] ⑤叶子节点中维护了一个前后叶子节点的指针,从而形成一条链表。
[0076] 另一方面,如图5所示,bitmap位图索引经常被用在数据库和搜索引擎中。通过利用位级并级度的优势,它能够显著地加速查询。本发明将一个bitmap看作是一个用高效紧凑的整数集S表示的二进制数组。给一个bitmap设置为n位,如果在[0,n‑1]范围内的第i个整数存在于集合中,则第i位设置为1。例如,集合{3,4,7}和集合{4,5,7}可以以二进制存储为10011000和10110000。本发明可在位图(例如,10111000和10010000)上使用按位操作(or,AND)计算两个对应列表之间的并集或交集。
[0077] 在本发明实施方式中,将32位索引的范围([0,n))划分为共享相同的16位最有效数字的2^16个整数块,使用专门的容器来存储它们的16个最低有效位。当一个块包含不超过4096个整数时,使用一个排好序的16位整数数组。当有超过4096个整数时,使用2^16位的位图。因此,我们有两种类型的容器:用于稀疏块的数组容器和用于密集块的位图容器。4096阈值确保在容器级别上,每个整数使用不超过16位:要么对超过4096个整数使用2^16位,或者使用小于16位/整数,或者恰好使用16位/整数。
[0078] 具体地,基于bitmap的相关操作包括:
[0079] 基数计算每种容器(位图容器、数组容器)都使用一个计数器来记录它的基数,所以最多只需要累加2^16个计数器就可以完成。
[0080] 数据查找判断一个32bit的整数x是否存在,我们首先使用二分查找搜索x/2^16关联的容器。如果访问到的是数组容器,那么我们将继续迭代二分查找;如果访问到的是bitmap容器,那么我们就访问第x%2^16个bit,“0”表示不存在,“1”表示存在。
[0081] 数据插入与删除对于插入或者删除一个数据,我们首先需要找到对应的容器,当对象是一个数组容器时,我们使用二分查找在线性时间内插入或删除数据;当对象是一个bitmap容器时,我们设置对应bit的值并更新计数器。当删除一个整数时,bitmap容器的基数可能会减少到4k,退化为一个数组容器。当增加一个整数,一个整数容器的基数可能会超过4k,而变成一个bitmap容器。当上述两种情况发生时,会创建新的容器,更新计数器等并丢弃旧容器。
[0082] 另一方面,如图6所示,哈希表是一种根据关键字直接访问内存存储位置的数据结构。通过哈希表,数据元素的存放位置和数据元素的关键字之间建立起某种对应关系,建立这种对应关系的函数称为哈希函数。线性哈希是一种动态扩展空间的哈希表,会随着插入的元素的增多而自动扩展空间。将n条记录装进N个桶中,使得每个桶中的元素个数较少,从而达到快速查询的目的。
[0083] 几个状态变量的解释:
[0084] P:平均每个桶能装的元素个数(P为常量,在整个算法过程中不变);
[0085] E:当前使用哈希值的最低的E位来进行分配(会随着N的增大而增大);
[0086] R:实际装入的元素个数;
[0087] N:当前使用的桶(Bucket)的个数(随着R的增大而增大)。
[0088] LHT要时刻保证两条性质:
[0089] 性质一:R/N<=P也就是,每个桶的平均元素个数一定要小于预先设定的P,不符合时,要增加N;
[0090] 性质二:2^(E‑1)<=N<2^E。
[0091] 另一方面,线性哈希表的要点包括:
[0092] (1)线性哈希表使用的是动态哈希算法;
[0093] (2)每一个哈希文件拥有许多容量为b的桶(bucket);
[0094] (3)使用一系列的哈希函数hi(k);
[0095] (4)典型的哈希函数为hi(k)=k mod 2i,i=1,2,3,4,…
[0096] (5)当数据量(key的数目)增长时,使用hi+1替换hi使得旧桶分裂产生新桶;
[0097] (6)当数据量增长时,使得某个桶中包含的数据量大于b,则触发旧桶分裂,假设旧桶中的数据是均匀分布的,那么将会有b/2的数据转移到新桶;
[0098] (7)当数据量减少时,不同的桶之间的数据会合并。
[0099] 另一方面,如图7所示,向量化计算是一种特殊的并行计算的方式,它可以在同一时间执行多次操作,通常是对不同的数据执行同样的一个或一批指令,或者说把指令应用于一个数组/向量。SIMD全称Single Instruction Multiple Data,单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。
[0100] 前提需要支持SIMD的CPU才能发挥其特性。现代CPU的管线宽度为4个uops,一个时钟周期内最多可以执行4条指令(如果同时有loads、stores和single‑uop的ALU指令)。因此,vectorization并不是CPU唯一一种并行计算的方式。在指令与指令层面同样有并行机制,可以让一个单独的CPU core在同一时间内执行多条CPU指令。当排队中的多条CPU指令包含了loads、stores、ALU,多数现代的CPU可以在一个时钟周期内同时执行4条指令。
[0101] 编译器可以自动实现向量化,通过良好的架构设计和代码设计,使得编译器能够生成良好的向量化代码。关键是基于Pipeline的执行引擎设计,能够按列对数据进行处理。
[0102] 在OLAP场景下,常用的Aggregate聚合函数Count、Sum、Distinct、Max、Min等需要封装实现,在本发明实施例中,基础模型是图,封装的基础是点、边以及多步的点边关系。针对点和边的分析,应用索引即可取得较好的效果,当需要跨关系分析时,需要结合邻接表对每一条路径再次应用函数实现。
[0103] 如图8所示,本发明还提出一种基于图的在线分析引擎系统,应用如上述实施方式中任一项公开的基于图的在线分析引擎实现方法,包括:
[0104] 图模型构建模块1,用于以点表达实体、以边表达关系,将业务模型抽象为图,将属性基于列进行存储;
[0105] 索引建立模块2,用于根据边集的特征通过哈希链表或邻接表实现,根据属性数据的特征建立哈希索引、位图索引或B+Tree索引;
[0106] 列向量计算模块3,用于按照向量化计算方式对属性数据进行循环计算,并按列组织表示为成列向量,每个列向量对应一整块连续数据;
[0107] 最优执行确定模块4,用于基于点和边、根据属性数据对应条件的指定方向来寻找路径的起始点、中间点、终点或结束边,并通过索引迭代确定最优执行方式;
[0108] 封装分析结果模块5,用于针对不同的分析函数,按照最优执行方式进行操作封装,循环迭代分析函数以得到分析结果。
[0109] 在该实施方式中,通过基于图的在线分析场景,提供基于混合索引的传统分析和图分析的融合解决方案,将Graph、Vertex、Edge、Attribute、Index等核心概念模型通过配置文件灵活指定,通过索引结构实现数据分析的加速,GOLAP的高效实现使得基于图的在线分析具备良好的效率,并具有良好的性能优势,且资源开销较小。
[0110] 在上述实施方式中,优选地,索引建立模块2建立索引的具体过程包括:若属性数据存在唯一识别的情况,则建立哈希索引,若属性数据稠密、基数较小,则建立位图索引,若属性数据稀疏、基数较大,则建立B+Tree索引。
[0111] 在上述实施方式中,优选地,最优执行方式通过索引选择性中的最大值来确定,索引选择性为不重复的索引值基数与表记录总行数的比值,索引选择性的取值范围为0~1,索引选择性越大则索引价值越大。
[0112] 在图上的分析,分为点分析、边分析、组合分析,单独的点边分析应用索引加速即可。组合分析的起始条件是点或边,点和边会根据属性条件指定方向找到中间点、进一步往前走到待分析的终点或结束边。通过索引可以快速找到路径的起始数据,然后根据边集的哈希活邻接表在图上进行路径迭代,针对不同的分析函数进行操作封装,循环迭代应用分析函数得到最后的分析结果。
[0113] 以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。