CN110727831A - 全路径计算方法、装置、计算机设备和存储介质 - Google Patents
全路径计算方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN110727831A CN110727831A CN201910915250.0A CN201910915250A CN110727831A CN 110727831 A CN110727831 A CN 110727831A CN 201910915250 A CN201910915250 A CN 201910915250A CN 110727831 A CN110727831 A CN 110727831A
- Authority
- CN
- China
- Prior art keywords
- node
- basic model
- hop count
- full path
- partition
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及一种全路径计算方法、装置、计算机设备和存储介质。所述方法包括:获取图中待计算路径的第一节点和第二节点,根据第一节点的第一邻接节点集合和第二节点的第二邻接节点集合取交集,构建第一基本模型,根据第一邻接节点集合和第二邻接节点集合之间的连通节点对,构建第二基本模型,当给定跳数大于3时,将给定跳数的全路径计算转化为第一基本模型和/或第二基本模型,通过计算第一基本模型和/或第二基本模型对给定跳数的全路径进行计算。采用本方法能够减少计算机内存占用。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种全路径计算方法、装置、计算机设备和存储介质。
背景技术
在一个给定的图G={V,E}(V代表所有的节点,E代表所有的边)中,查找任意节点对节点V1和节点V2之间的全路径问题是一个NP(Non-Deterministic Polynomial,非确定性多项式)问题。在一般的实际业务场景中,针对节点对间的全路径查找通常会给定一个跳数范围限制,如查找k跳内节点V1至节点V2的全路径。设定了跳数限制后,该问题是可解的,暴力的做法便是采用BFS(广度优先搜索)或DFS(深度优先搜索)从节点V1出发遍历所有可能的路径即可,只是完成一次计算所需的搜索时间与存储占用消耗可能会超出预想:任意一层的每一个节点均需记录起始点经过已遍历层数到该节点的所有路径。极端的情况,随着k的增加内存消耗会成指数级增加。
还有一些算法,如Multi-Source BFS等,采用并行计算的方式,从多个节点出发进行BFS查找,这些方案并不能减少每个节点需记录的路径数量,内存(及存储)消耗依然很大。其他一些算法,如BSP(bulk synchronous parallel)算法,是基于全图计算的,算法结束后可得到全图任意两点间经过指定跳数的所有路径。因此必须事先基于全图进行计算后,存储下所有的路径,然后才能根据实际查询要求选取出节点V1和节点V2在k跳内的全路径。其计算方法为在每一次迭代中,由一个节点a向另一个节点b发送该节点a所记录的上一个迭代中到a节点的所有路径的信息。该方法每完成一次迭代(迭代次数记为k)即得到经过k跳到达一个节点a的所有路径。本质上该方法依然需要每个节点记录所有的路径信息数,因此其内存(及存储)消耗也非常大。
发明内容
基于此,有必要针对上述技术问题,提供一种能够全路径计算时内存消耗大问题的全路径计算方法、装置、计算机设备和存储介质。
一种全路径方法,所述方法包括:
获取图中待计算路径的第一节点和第二节点;
根据第一节点的第一邻接节点集合和所述第二节点的第二邻接节点集合取交集,构建第一基本模型;
根据所述第一邻接节点集合和所述第二邻接节点集合之间的连通节点对,构建第二基本模型;
当给定跳数大于3时,将所述给定跳数的全路径计算转化为所述第一基本模型和/或所述第二基本模型,通过计算所述第一基本模型和/或所述第二基本模型对给定跳数的全路径进行计算。
在其中一个实施例中,还包括:缓存第一节点对应的第一邻接节点集合以及第二节点对应的第二邻接节点集合;对所述第一邻接节点集合和所述第二邻接节点集合取交集,得到路径节点集合;根据所述路径节点集合,构建第一基本模型;其中,所述第一基本型中的全路径由第一节点、所述路径节点集合中的路径节点以及第二节点依次连接构成。
在其中一个实施例中,还包括:将所述第一邻接节点集合和所述第二邻接节点集合中节点数量少的集合确定为SVmin,另一个集合确定为SVmax;
获取所述SVmin中每个节点的邻接节点集合;取所述邻接节点集合和所述SVmax的交集,得到所述第一邻接节点集合和所述第二邻接节点集合的连通节点对;根据所述连通节点对,构建第二基本型;其中,所述第二基本型中的全路径由第一节点、所述连通节点对两端的节点以及所述第二节点依次连接构成。
在其中一个实施例中,还包括:当给定跳数大于3时,取所述给定跳数的中间点,将所述中间点构成的集合确定为第三节点集合;当第一节点与所述第三节点集合中的第三节点的跳数等于2时,选择第一基本模型,当第一节点与所述第三节点集合中第三节点的跳数等于3时,选择第二基本模型,对所述第一基本模型或第二基本模型进行计算,得到第一全路径;当第二节点与所述第三节点集合中的第三节点的跳数等于2时,选择第一基本模型,当第二节点与所述第三节点集合中第三节点的跳数等于3时,选择第二基本模型,对所述第一基本模型或第二基本模型进行计算,得到第二全路径;对所述第一全路径和所述第二全路径进行拼接得到指定跳数的全路径。
在其中一个实施例中,还包括:当所述中间点到第一节点或第二节点的跳数大于3时,将所述中间点与第一节点第二节点的跳数进行划分,直到各个分段的跳数等于2或3。
在其中一个实施例中,还包括:当给定跳数N大于3时,取所述给定跳数的中间值N/2;当所述中间值N/2是整数时,将所述给定跳数的全路径计算划分为第一分区和第二分区,并且选择第一基本模型进行全路径计算;其中,第一分区和第二分区的跳数N1=N/2;当所述中间值N/2是非整数时,将所述给定跳数的将所述给定跳数的全路径计算划分为第一分区和第二分区,并且选择第二基本模型进行全路径计算;其中,第一分区和第二分区的跳数N1=(N-1)/2
当第一分区和第二分区的跳数N1不大于3,且N1/2是整数时,选择第一基本模型进行第一分区和第二分区的全路径计算;当第一分区和第二分区的跳数N1不大于3,且N1/2是非整数时,选择第二基本模型进行第一分区和第二分区的计算;当第一分区和第二分区的跳数N1大于3时,分别对第一分区和第二分区进行划分,直到分区不大于3;按照分区从小到大的顺序依次计算得到给定跳数N的全路径。
一种全路径计算装置,所述装置包括:
节点获取模块,用于获取图中待计算路径的第一节点和第二节点;
第一基本型构建模块,用于根据第一节点的第一邻接节点集合和所述第二节点的第二邻接节点集合取交集,构建第一基本模型;
第二基本型构建模块,用于根据所述第一邻接节点集合和所述第二邻接节点集合之间的连通节点对,构建第二基本模型;
全路径计算模块,用于当给定跳数大于3时,将所述给定跳数的全路径计算转化为所述第一基本模型和/或所述第二基本模型,通过计算所述第一基本模型和/或所述第二基本模型对给定跳数的全路径进行计算。
在其中一个实施例中,所述第一基本型构建模块还用于缓存第一节点对应的第一邻接节点集合以及第二节点对应的第二邻接节点集合;对所述第一邻接节点集合和所述第二邻接节点集合取交集,得到路径节点集合;根据所述路径节点集合,构建第一基本模型;其中,所述第一基本型中的全路径由第一节点、所述路径节点集合中的路径节点以及第二节点依次连接构成。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取图中待计算路径的第一节点和第二节点;
根据第一节点的第一邻接节点集合和所述第二节点的第二邻接节点集合取交集,构建第一基本模型;
根据所述第一邻接节点集合和所述第二邻接节点集合之间的连通节点对,构建第二基本模型;
当给定跳数大于3时,将所述给定跳数的全路径计算转化为所述第一基本模型和/或所述第二基本模型,通过计算所述第一基本模型和/或所述第二基本模型对给定跳数的全路径进行计算。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取图中待计算路径的第一节点和第二节点;
根据第一节点的第一邻接节点集合和所述第二节点的第二邻接节点集合取交集,构建第一基本模型;
根据所述第一邻接节点集合和所述第二邻接节点集合之间的连通节点对,构建第二基本模型;
当给定跳数大于3时,将所述给定跳数的全路径计算转化为所述第一基本模型和/或所述第二基本模型,通过计算所述第一基本模型和/或所述第二基本模型对给定跳数的全路径进行计算。
上述全路径计算方法、装置、计算机设备和存储介质,通过节点双向搜索的方式,分别从两个节点获取邻接节点集合,从而减少了节点遍历时的内存消耗,另一方面,建立了两个基本模型,然后在跳数大于3的情况下,将问题化解为两个基本模型的计算,从而进一步减少了内存的消耗,从而在跳数增加的情况下,内存消耗只呈现线性增长,从而减少对计算机的压力。
附图说明
图1为一个实施例中全路径计算方法的应用场景图;
图2为一个实施例中全路径计算方法的流程示意图;
图3为一个实施例中1跳全路径的示意图;
图4为一个实施例中2跳全路径的示意图;
图5为一个实施例中3跳全路径的示意图;
图6为一个实施例中5跳全路径的示意图;
图7为一个实施例中国泰君安与浦发银行之间4跳全路径的示意图;
图8为一个实施例中全路径计算装置的结构框图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的全路径计算方法,可以应用于如图1所示的应用环境中。其中,终端102与服务器104通过网络进行通信。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
具体的,终端102通过网络将图上传至服务器104中,服务器104解析需要计算全路径的节点,从而通过构建第一基本模型和第二基本模型,对给定跳数的全路径进行计算。
在一个实施例中,如图2所示,提供了一种全路径计算方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤202,获取图中待计算路径的第一节点和第二节点。
图可以用G={V,E}表示,其中,V表示图中的节点,E表示节点连接构成的边,通过边,可以确定每个节点的邻节点,从而可以确定由邻节点构成的邻节点构成的邻接节点集合,对于给定的第一节点和第二节点,通过节点遍历的方式,可以找到第一节点到第二节点的路径,所有的路径即组成第一节点到第二节点的全路径。
步骤204,根据第一节点的第一邻接节点集合和第二节点的第二邻接节点集合取交集,构建第一基本模型。
与第一节点存在边的节点为第一节点的邻节点,所有邻节点组成第一邻接节点集合,同理,与第二节点存在边的节点为第二节点的邻节点,所有邻节点组成第二邻接节点集合。
取交集即找出第一邻接节点集合和第二邻接节点集合中共同存在的节点,因此,第一基本模型用于在给定第一节点和第二节点时,找出上述的共同存在的节点。
步骤206,根据第一邻接节点集合和第二邻接节点集合之间的连通节点对,构建第二基本模型。
若第一邻接节点集合中的节点通过一条边与第二邻接节点集合中其他节点连接,则这两个节点形成一个连通节点对,因此,第二基本模型确定第一邻接节点集合与第二邻接节点集合之间存在的连通节点对。
步骤208,当给定跳数大于3时,将给定跳数的全路径计算转化为第一基本模型和/或第二基本模型,通过计算第一基本模型和/或第二基本模型对给定跳数的全路径进行计算。
将给定跳数的全路径计算转为为第一基本模型和/或第二基本模型指的是,第一基本模型之间的组合、第一基本模型和第二基本模型之间的组合以及第二基本模型之间的组合,例如:给定跳数是4,则将4跳的全路径计算转为两个第一基本模型的全路径计算,给定跳数是5,则将5跳的全路径计算转化为一个第一基本模型和一个第二基本模型的全路径计算,给定跳数是6,则将6跳的全路径计算转化为两个第二基本模型的全路径计算。
上述全路径计算方法中,基于流式计算的原理,通过节点双向搜索的方式,分别从两个节点获取邻接节点集合,从而减少了节点遍历时的内存消耗,另一方面,建立了两个基本模型,然后在跳数大于3的情况下,将问题化解为两个基本模型的计算,从而进一步减少了内存的消耗,从而在跳数增加的情况下,内存消耗只呈现线性增长,从而减少对计算机的压力。
在其中一个实施例中,如图3所示,在第一节点和第二节点通过1跳的全路径时,只需要列举出第一节点和第二节点的边,若二者不存在边,则没有路径。
在其中一个实施例中,在计算第一节点和第二节点通过2跳的全路径时,如图4所示,只需计算第一邻接节点集合和第二邻接节点集合的交集即可,具体的,获取第一节点的邻节点组成的第一邻接节点集合,在内存中缓存第一邻接节点集合,获取第二节点的邻节点组成的第二邻接节点集合,在内存中缓存第二邻接节点集合,计算第一邻接节点集合和第二邻接节点集合的交集,从而得到多个路径节点组成的路径节点集合,根据路径节点集合,构建第一基本模型,第一基本模型的逻辑是全路径由第一节点、路径节点集合中路径节点以及第二节点依次连接构成。
本实施例中,通过设置第一基本模型的逻辑,在后续计算调用第一基本模型时,在确定第一节点和第二节点后,可以计算第一节点和第二节点之间的全路径。
值得说明的是,第一和第二是为了区别表述,并不存在实际意义,例如在一个5跳的全路径计算中,一条路径中包含了6个节点,对于整个5跳全路径计算而言,第一个节点和第六个节点是第一节点和第二节点,但是引用第一基本模型和第二基本模型计算后,例如引用了第一基本模型和第二基本模型,对于第一基本模型,第一个节点和第三个节点是第一节点和第二节点。
具体的,设置第一节点标记为V1,第二节点标记为V2,节点V1的第一邻接节点集合标记为SV1,节点V2的第二邻接节点集合标记为SV2,那么路径节点集合SVj=SV1∩SV2,则2跳的全路径为V1-Vj-V2(Vj∈SVj)。
本实施例中,相较于现有遍历的方式而言,可以大幅度的减少计算次数,以及内存中数据存储量。
在其中一个实施例中,在计算第一节点和第二节点通过3跳的全路径时,如图5所示,只需计算第一邻接节点集合和第二邻接节点集合的通连节点对即可,具体的:将第一邻接节点集合和第二邻接节点集合中节点数量少的集合确定为SVmin,另一个集合确定为SVmax,获取SVmin中每个节点的邻接节点集合,取邻接节点集合和所述SVmax的交集,得到第一邻接节点集合和第二邻接节点集合的连通节点对,根据连通节点对,构建第二基本型,其中,第二基本型中的全路径由第一节点、连通节点对两端的节点以及第二节点依次连接构成。值得说明的是,连通节点对是由两个节点连接构成,因此两端的节点指的是连接的两个节点,另外,第一邻接节点集合和第二邻接节点集合中存在相同的节点,因此。连通节点对两端的节点是不同的。
本实施例中,通过确定节点数量少的邻接节点集合,可以有效的减少计算量。
具体的,在对各个集合进行标记之后,对于任意节点Vi∈SVmin,缓存邻接节点集合CVi得到所有节点对应的集合SVi,通过求交集的方式得到邻接节点集,邻接节点集是通过多个连通节点对构成,SVic=SVi∩SVmax,得到3跳的全路径,全路径表示为V1-Vi-Vic-V2。
本实施例中,第二基本模型的逻辑是,在确定第一节点和第二节点时,可以通过上述方法确定其中的连通节点对,以及确定路径的方向。
在其中一个实施例中,当跳数大于3时,无法直接通过基本模型计算全路径,因此需要对全路径计算进行分块,在每个块中,基于流式计算方法分别采用基本模型进行计算,可以大幅度的减少内存占用。
具体的分块可以采用中间值分块的方法,即给定跳数取均值,以5跳为例,均值是2.5,则可以依据中间值可以将5跳分为一个2跳以及一个3跳,同理,可以对任意跳数的全路径计算转化为2跳和3跳进行拼接的方式。
在一个实施例中,如图6所示,拼接的方式为:获取节点V1进行2跳得到集合SV1-2和获取节点V2进行2跳得到的集合SV2-2,得到SV1-2和SV2-2中节点数量较少的一个集合,对于SV1-2中的每一个节点Vj,计算节点Vj到节点V2的全路径,然后拼接到节点V1到节点Vj的全路径上,得到5跳的全路径计算结果。同理,可以进行任意跳数的全路径计算。
在又一个实施例中,当中间点到第一节点或第二节点的跳数大于3时,将中间点与第一节点第二节点的跳数进行划分,直到各个分段的跳数等于2或3。通过上述方式可以将任意跳数的全路径计算转化为2跳或者3跳的全路径计算,从而可以直接调用预先缓存的第一基本模型和第二基本模型,可以大幅度的降低内存的占用。
通过上述实施例中,由于第一基本模型和第二基本模型都是基于双向搜索,因此每当采用一个第一基本模型或者第二基本模型,就等同于引入一次双向搜索,因此,如何有效的将给定跳数的全路径计算转化为第一基本模型或者第二基本模型,可以进一步减少内存占用。
具体的,还提出一种转化方式,具体步骤如下:当给定跳数N大于3时,取所述给定跳数的中间值N/2;当中间值N/2是整数时,将给定跳数的全路径计算划分为第一分区和第二分区,并且选择第一基本模型进行全路径计算;其中,第一分区和第二分区的跳数N1=N/2;当中间值N/2是非整数时,将给定跳数的将给定跳数的全路径计算划分为第一分区和第二分区,并且选择第二基本模型进行全路径计算;其中,第一分区和第二分区的跳数N1=(N-1)/2;当第一分区和第二分区的跳数N1不大于3,且N1/2是整数时,选择第一基本模型进行第一分区和第二分区的全路径计算;当第一分区和第二分区的跳数N1不大于3,且N1/2是非整数时,选择第二基本模型进行第一分区和第二分区的计算;当第一分区和第二分区的跳数N1大于3时,分别对第一分区和第二分区进行划分,直到分区不大于3;按照分区从小到大的顺序依次计算得到给定跳数N的全路径。
在一个实际例子中,以5跳为例。5/2=2.5,则转化为第一节点通过2跳得到的第一节点集合与第二节点通过2跳得到的第二节点集合之间计算连通节点对,可以确定5跳的全路径计算,由于第一节点的2跳可以通过第一基本模型确定,而连通节点对可以通过第二基本模型确定。从而对于5跳全路径计算可以根据第一基本模型和第二基本模型计算得到。同理可以4跳全路径计算时,中间数是2,因此,转化为第一节点通过2跳得到第一节点集合与第二节点通过2跳得到的第二节点集合取交集,取交集的操作可以通过第一基本模型执行,而2跳的计算可以通过第一基本型执行,因此,可以通过执行多次第一基本模型,可以完成4跳全路径的计算。通过上述方式,可以进行任意跳数的全路径的计算,并且引入更多的基本模型计算,可以有效降低内存占用。
在全量的工商股权与投资数据(1.7亿个节点,5亿条边)作为图,发明人对上述方法形成具体的程序,并且运行在32GB内存2x8 Cores CPU服务器中,以neo4j的存储过程为实现方式,对任意两个节点4跳内全路径计算,基于BFS/DFS算法的多跳全路径计算(可用内存约为12GB)方法时多数例子会出现内存溢出的情况,且计算时间为分钟级别(5-20分钟),采用本方法任意两点间4跳以内的全路径计算可以实现秒级,如图7中,国泰君安与浦发银行之间4跳全路径计算约在50秒完成,并且内存占用维持在40%左右。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种全路径计算装置,包括:节点获取模块802、第一基本型构建模块804、第二基本型构建模块806和全路径计算模块808,其中:
节点获取模块802,用于获取图中待计算路径的第一节点和第二节点;
第一基本型构建模块804,用于根据第一节点的第一邻接节点集合和所述第二节点的第二邻接节点集合取交集,构建第一基本模型;
第二基本型构建模块806,用于根据所述第一邻接节点集合和所述第二邻接节点集合之间的连通节点对,构建第二基本模型;
全路径计算模块808,用于当给定跳数大于3时,将所述给定跳数的全路径计算转化为所述第一基本模型和/或所述第二基本模型,通过计算所述第一基本模型和/或所述第二基本模型对给定跳数的全路径进行计算。
在其中一个实施例中,第一基本型构建模块804还用于缓存第一节点对应的第一邻接节点集合以及第二节点对应的第二邻接节点集合;对所述第一邻接节点集合和所述第二邻接节点集合取交集,得到路径节点集合;根据所述路径节点集合,构建第一基本模型;其中,所述第一基本型中的全路径由第一节点、所述路径节点集合中的路径节点以及第二节点依次连接构成。
在其中一个实施例中,第二基本型构建模块806,还用于将所述第一邻接节点集合和所述第二邻接节点集合中节点数量少的集合确定为SVmin,另一个集合确定为SVmax;获取所述SVmin中每个节点的邻接节点集合;取所述邻接节点集合和所述SVmax的交集,得到所述第一邻接节点集合和所述第二邻接节点集合的连通节点对;根据所述连通节点对,构建第二基本型;其中,所述第二基本型中的全路径由第一节点、所述连通节点对两端的节点以及所述第二节点依次连接构成。
在其中一个实施例中,全路径计算模块808还用于当给定跳数大于3时,取所述给定跳数的中间点,将所述中间点构成的集合确定为第三节点集合;当第一节点与所述第三节点集合中的第三节点的跳数等于2时,选择第一基本模型,当第一节点与所述第三节点集合中第三节点的跳数等于3时,选择第二基本模型,对所述第一基本模型或第二基本模型进行计算,得到第一全路径;当第二节点与所述第三节点集合中的第三节点的跳数等于2时,选择第一基本模型,当第二节点与所述第三节点集合中第三节点的跳数等于3时,选择第二基本模型,对所述第一基本模型或第二基本模型进行计算,得到第二全路径;对所述第一全路径和所述第二全路径进行拼接得到指定跳数的全路径。
在其中一个实施例中,全路径计算模块808还用于当所述中间点到第一节点或第二节点的跳数大于3时,将所述中间点与第一节点第二节点的跳数进行划分,直到各个分段的跳数等于2或3。
在其中一个实施例中,全路径计算模块808还用于当给定跳数N大于3时,取所述给定跳数的中间值N/2;当所述中间值N/2是整数时,将所述给定跳数的全路径计算划分为第一分区和第二分区,并且选择第一基本模型进行全路径计算;其中,第一分区和第二分区的跳数N1=N/2;当所述中间值N/2是非整数时,将所述给定跳数的将所述给定跳数的全路径计算划分为第一分区和第二分区,并且选择第二基本模型进行全路径计算;其中,第一分区和第二分区的跳数N1=(N-1)/2;当第一分区和第二分区的跳数N1不大于3,且N1/2是整数时,选择第一基本模型进行第一分区和第二分区的全路径计算;当第一分区和第二分区的跳数N1不大于3,且N1/2是非整数时,选择第二基本模型进行第一分区和第二分区的计算;当第一分区和第二分区的跳数N1大于3时,分别对第一分区和第二分区进行划分,直到分区不大于3;按照分区从小到大的顺序依次计算得到给定跳数N的全路径。
关于全路径计算装置的具体限定可以参见上文中对于全路径计算方法的限定,在此不再赘述。上述全路径计算装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储节点数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种全路径计算方法。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现上述实施例中方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种全路径计算方法,所述方法包括:
获取图中待计算路径的第一节点和第二节点;
根据第一节点的第一邻接节点集合和所述第二节点的第二邻接节点集合取交集,构建第一基本模型;
根据所述第一邻接节点集合和所述第二邻接节点集合之间的连通节点对,构建第二基本模型;
当给定跳数大于3时,将所述给定跳数的全路径计算转化为所述第一基本模型和/或所述第二基本模型,通过计算所述第一基本模型和/或所述第二基本模型对给定跳数的全路径进行计算。
2.根据权利要求1所述的方法,其特征在于,所述根据第一节点的第一邻接节点集合和所述第二节点的第二邻接节点集合取交集,构建第一基本模型,包括:
缓存第一节点对应的第一邻接节点集合以及第二节点对应的第二邻接节点集合;
对所述第一邻接节点集合和所述第二邻接节点集合取交集,得到路径节点集合;
根据所述路径节点集合,构建第一基本模型;其中,所述第一基本型中的全路径由第一节点、所述路径节点集合中的路径节点以及第二节点依次连接构成。
3.根据权利要求1所述的方法,其特征在于,根据所述第一邻接节点集合和所述第二邻接节点集合之间的连通节点对,构建第二基本模型,包括:
将所述第一邻接节点集合和所述第二邻接节点集合中节点数量少的集合确定为SVmin,另一个集合确定为SVmax;
获取所述SVmin中每个节点的邻接节点集合;
取所述邻接节点集合和所述SVmax的交集,得到所述第一邻接节点集合和所述第二邻接节点集合的连通节点对;
根据所述连通节点对,构建第二基本型;其中,所述第二基本型中的全路径由第一节点、所述连通节点对两端的节点以及所述第二节点依次连接构成。
4.根据权利要求1至3任意一项所述的方法,其特征在于,当给定跳数大于3时,将所述给定跳数的全路径计算转化为所述第一基本模型和/或所述第二基本模型,包括:
当给定跳数大于3时,取所述给定跳数的中间点,将所述中间点构成的集合确定为第三节点集合;
当第一节点与所述第三节点集合中的第三节点的跳数等于2时,选择第一基本模型,当第一节点与所述第三节点集合中第三节点的跳数等于3时,选择第二基本模型,对所述第一基本模型或第二基本模型进行计算,得到第一全路径;
当第二节点与所述第三节点集合中的第三节点的跳数等于2时,选择第一基本模型,当第二节点与所述第三节点集合中第三节点的跳数等于3时,选择第二基本模型,对所述第一基本模型或第二基本模型进行计算,得到第二全路径;
对所述第一全路径和所述第二全路径进行拼接得到指定跳数的全路径。
5.根据权利要求4所述的方法,其特征在于,还包括:
当所述中间点到第一节点或第二节点的跳数大于3时,将所述中间点与第一节点第二节点的跳数进行划分,直到各个分段的跳数等于2或3。
6.根据权利要求1至3任意一项所述的方法,其特征在于,当给定跳数大于3时,将所述给定跳数的全路径计算转化为所述第一基本模型和/或所述第二基本模型,包括:
当给定跳数N大于3时,取所述给定跳数的中间值N/2;
当所述中间值N/2是整数时,将所述给定跳数的全路径计算划分为第一分区和第二分区,并且选择第一基本模型进行全路径计算;其中,第一分区和第二分区的跳数N1=N/2;
当所述中间值N/2是非整数时,将所述给定跳数的将所述给定跳数的全路径计算划分为第一分区和第二分区,并且选择第二基本模型进行全路径计算;其中,第一分区和第二分区的跳数N1=(N-1)/2;
当第一分区和第二分区的跳数N1不大于3,且N1/2是整数时,选择第一基本模型进行第一分区和第二分区的全路径计算;
当第一分区和第二分区的跳数N1不大于3,且N1/2是非整数时,选择第二基本模型进行第一分区和第二分区的计算;
当第一分区和第二分区的跳数N1大于3时,分别对第一分区和第二分区进行划分,直到分区不大于3;
按照分区从小到大的顺序依次计算得到给定跳数N的全路径。
7.一种全路径计算装置,其特征在于,所述装置包括:
节点获取模块,用于获取图中待计算路径的第一节点和第二节点;
第一基本型构建模块,用于根据第一节点的第一邻接节点集合和所述第二节点的第二邻接节点集合取交集,构建第一基本模型;
第二基本型构建模块,用于根据所述第一邻接节点集合和所述第二邻接节点集合之间的连通节点对,构建第二基本模型;
全路径计算模块,用于当给定跳数大于3时,将所述给定跳数的全路径计算转化为所述第一基本模型和/或所述第二基本模型,通过计算所述第一基本模型和/或所述第二基本模型对给定跳数的全路径进行计算。
8.根据权利要求7所述的装置,其特征在于,所述第一基本型构建模块还用于缓存第一节点对应的第一邻接节点集合以及第二节点对应的第二邻接节点集合;对所述第一邻接节点集合和所述第二邻接节点集合取交集,得到路径节点集合;根据所述路径节点集合,构建第一基本模型;其中,所述第一基本型中的全路径由第一节点、所述路径节点集合中的路径节点以及第二节点依次连接构成。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910915250.0A CN110727831A (zh) | 2019-09-26 | 2019-09-26 | 全路径计算方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910915250.0A CN110727831A (zh) | 2019-09-26 | 2019-09-26 | 全路径计算方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110727831A true CN110727831A (zh) | 2020-01-24 |
Family
ID=69219483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910915250.0A Pending CN110727831A (zh) | 2019-09-26 | 2019-09-26 | 全路径计算方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110727831A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112076478A (zh) * | 2020-09-25 | 2020-12-15 | 网易(杭州)网络有限公司 | 游戏路径的生成方法及装置 |
CN115203485A (zh) * | 2022-07-21 | 2022-10-18 | 北京芯思维科技有限公司 | 图数据的处理方法、装置、电子设备及计算机可读介质 |
-
2019
- 2019-09-26 CN CN201910915250.0A patent/CN110727831A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112076478A (zh) * | 2020-09-25 | 2020-12-15 | 网易(杭州)网络有限公司 | 游戏路径的生成方法及装置 |
CN115203485A (zh) * | 2022-07-21 | 2022-10-18 | 北京芯思维科技有限公司 | 图数据的处理方法、装置、电子设备及计算机可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108681482B (zh) | 基于图数据的任务调度方法和装置 | |
CN109033234B (zh) | 一种基于状态更新传播的流式图计算方法及系统 | |
CN110555700A (zh) | 区块链智能合约执行方法、装置、计算机可读存储介质 | |
CN113449153B (zh) | 索引构建方法、装置、计算机设备和存储介质 | |
US20200143254A1 (en) | Method and system for partitioning of deep convolution network for executing on computationally constraint devices | |
CN110727831A (zh) | 全路径计算方法、装置、计算机设备和存储介质 | |
CN100383788C (zh) | 一种对系统资源进行管理的实现方法 | |
CN112559529B (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
CN111343012B (zh) | 云平台的缓存服务器部署方法、装置和计算机设备 | |
Nedich et al. | A geometrically convergent method for distributed optimization over time-varying graphs | |
Bürgy | A neighborhood for complex job shop scheduling problems with regular objectives | |
CN110490302B (zh) | 一种神经网络编译优化方法、装置以及相关产品 | |
CN112001491A (zh) | 针对处理器确定神经网络架构的搜索方法和装置 | |
CN116720549A (zh) | 一种基于cnn输入全缓存的fpga多核二维卷积加速优化方法 | |
Hasircioğlu et al. | Speeding up private distributed matrix multiplication via bivariate polynomial codes | |
CN108389124B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN111178024B (zh) | 数据表拼接方法、装置、计算机设备和存储介质 | |
US11315036B2 (en) | Prediction for time series data using a space partitioning data structure | |
Wu et al. | Data locality optimization of depthwise separable convolutions for CNN inference accelerators | |
CN115277570A (zh) | 流量分配方法、装置、计算机设备和存储介质 | |
Chen et al. | A Sketch-based clustering algorithm for uncertain data streams | |
KR101902213B1 (ko) | 유사이미지 검색을 위한 해시코드 생성장치 및 방법 | |
RU2542925C1 (ru) | Способ самоорганизации распределенной многопроцессорной системы | |
CN113726749B (zh) | 基于大数据和智慧安防的数据管理系统 | |
CN117851614B (zh) | 一种用于海量数据的搜索方法、装置、系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200124 |
|
RJ01 | Rejection of invention patent application after publication |