CN110222055A - 一种动态图下多边更新的单轮核值维护方法 - Google Patents
一种动态图下多边更新的单轮核值维护方法 Download PDFInfo
- Publication number
- CN110222055A CN110222055A CN201910435764.6A CN201910435764A CN110222055A CN 110222055 A CN110222055 A CN 110222055A CN 201910435764 A CN201910435764 A CN 201910435764A CN 110222055 A CN110222055 A CN 110222055A
- Authority
- CN
- China
- Prior art keywords
- vertex
- core value
- degree
- point
- core
- 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.)
- Granted
Links
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2465—Query processing support for facilitating data mining operations in structured databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/288—Entity relationship models
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种动态图下多边更新的单轮核值维护方法,包括插入点或边时的顶点核值维护单轮算法和删除点或边时的顶点核值维护单轮算法。在更新图之前,维护一个全局有序的节点次序。插入点或边的核值维护算法在单轮中一次性加入所有边,之后按照次序依次对顶点开始遍历,将核值增加的顶点的影响向高次序顶点移动,直到没有顶点的核值发生变化。删除点或边的核值维护算法在单轮中一次性删除所有边,并从删除了边的顶点开始遍历,通过不断的迭代直到所有顶点的核值处于稳定状态。本发明方法通过单轮算法便完成了所有顶点的核值维护,减少了图遍历过程中对顶点的冗余计算,缩减了核值维护的时间,尤其对于大规模图而言具有极好的扩展性和稳定性。
Description
技术领域
本发明属于社交网络图数据挖掘技术领域,特别是涉及一种动态图下多边更新的单轮核值维护方法。
背景技术
图数据结构能很好地表达数据之间的关联性。许多现实问题都能抽象为图数据结构,将每个实例个体抽象为图中的顶点,将每个实体之间的关系抽象为两个顶点之间的边。许多大数据问题都以大规模图或网络的形式存在,比如社交网络、交通网络图、传染病传播路径分析图和学术论文的依赖图。
但是随着互联网的蓬勃发展,图的规模呈指数级增长,图中顶点之间的关系也越来越越复杂,这对大规模图的分析算法提出了严峻的要求。一个有用的解决方案是对图的一个子图进行分析,这是因为一个图的子图的规模与整个图的相比很小,所以可以直接应用现有的图算法对这个子图进行数据挖掘和分析。其中,核值是一种高效且有用的用来分析图中紧密子图的索引,它可以有效地用来衡量一个图中某个子图的紧密性。一个图的K核是图的一个子图,在这个子图中每个顶点都至少有K个邻居。对于图中某个顶点,如果能够找到K核包含这个顶点,但是不能找到一个K+1核包含这个顶点,那么这个顶点的核值就是K。
但是在现实生活中,图的顶点或边随着时间在不断的发生变化。例如,在社交网络中,随着新用户注册新的账号,老用户注销账号,对应图中顶点的增加和删除,用户之间相互加好友或删除好友对应图中边的增加和删除。在这样的动态网络中,随着点或边的增加和删除,图中每个顶点的核值也在发生变化。在动态图中,随着点或边的增加和删除而更新每个顶点核值的问题被称为核值维护问题。核值维护问题的难点在于随着图的变化,需要区分出图中每个顶点的核值变化了多少以及哪些顶点的核值真正发生了变化。
现有的核值维护算法,通过多次迭代的方法,在每次迭代中找到一个边构成的结构来确保所有顶点的核值最多只能增加1。但是这种算法需要在每次迭代中都需要在寻找一个可用的结构,这将花费很多不必要的时间。特别地,寻找这个结构花费的时间开销占每次迭代总时间的比例较高,均摊下来,将是一笔不小的时间开销。
发明内容
本发明提供一种动态图下多边更新的单轮核值维护方法,用以解决现有动态图核值维护过程中因需要进行多次算法的迭代导致时间开销过高的技术问题。
本发明解决上述技术问题的技术方案如下:一种动态图下多边更新的单轮核值维护方法,当在社交网络的动态图下插入点或边时,采用动态图下插入点或边时顶点核值维护子方法,该顶点核值维护子方法包括:
S1、确定当前动态图中各顶点的候选度、核值和停留度,并将各顶点归类,形成多个k-order集合Ok,k为该Ok中各顶点当前的核值;
S2、基于所有要插入的点或边,更新每个顶点的候选度;
S3、按照k从小到大的顺序,确定一个Ok,基于该Ok中一顶点v的候选度和停留度,判断该顶点v是否是核值增加点;
S4、若是,更新该Ok中次序排在其后的邻居顶点的停留度,并对该Ok中次序紧随顶点v的下一顶点执行S3;否则,基于该顶点v的停留度,选择下一个顶点执行S3或更新该顶点v的候选度和停留度并传递该顶点v核值不增加的影响后选择下一个顶点执行S3;
其中,若该Ok中所有顶点已遍历完,则将所有不是核值增加点的顶点按次序添加到下一个Ok,并对更新后的下一个Ok执行S3,直至遍历完所有Ok,得到每个顶点的核值更新值,完成核值维护。
本发明的有益效果是:本发明是一种在动态图中多条边更新的情况下仅通过单轮算法便完成所有顶点核值更新的快速有效的顶点核值维护方法。该发明方法在更新图之前,先维护一个全局有序的节点次序,在单轮中一次性加入所有边,之后按照次序依次对顶点开始遍历,将核值增加的顶点的影响向高次序顶点移动,直到没有顶点的核值发生变化。本发明方法通过单轮算法便完成了所有顶点的核值维护,减少了图遍历过程中对顶点的冗余计算,缩减了核值维护的时间,尤其对于大规模图而言具有极好的扩展性和稳定性。
上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述更新每个顶点的候选度,具体为:
对每个所加边对应的在Ok中次序在前的顶点的候选度加1,完成各个顶点的候选度更新。
进一步,所述判断该顶点v是否是核值增加点,具体为:
判断该Ok中顶点v的候选度和停留度的加和是否大于k,若是,则判断顶点v是核值增加点,否则,判断顶点v是非核值增加点。
进一步,所述当前动态图中各顶点的停留度预设为零;
则S4包括:
S4.1、若是,对在该Ok中次序排在其后的邻居顶点的停留度加一,并对该Ok中次序紧随顶点v的下一顶点执行S3;若否,执行S4.2;
S4.2、判断该顶点v的停留度是否为零,若是,根据次序排在其后的各顶点的候选度和停留度,选择对下一个顶点执行S3;若否,执行S4.3;
S4.3、将顶点v的候选度更新为当前的候选度和停留度的加和,将顶点v的停留度更新为零,传递该顶点v核值不能增加的影响,并根据次序排在其后的各顶点的候选度和停留度,选择下一个顶点执行S3。
本发明的进一步有益效果是:判断顶点的停留度等于0还是不等于0,是排除其对前面的邻居顶点是否有造成核值影响,当等于0时,说明前面邻居顶点都不是核值增加者,所以不用考虑该顶点,该顶点不会是核值发生变化的顶点,提高计算速度。
进一步,所述S4.2中,所述根据次序排在其后的各顶点的候选度和停留度,选择下一个顶点执行S3,具体为:
判断该Ok中是否存在次序排在顶点v后的第一个候选度大于k或停留度大于0的顶点u,若是,将顶点u确定为下一顶点并执行S3,若否,则该Ok中所有顶点已遍历完。
本发明的进一步有益效果是:对于不是核值增加的顶点v,则对次序排在其后的顶点进行判断,可以先通过后面的顶点的候选度和停留度,来初步判断是否可能是核值增加的顶点,然后再进行后续的核值维护,提高计算速度,减少时间开销。
进一步,所述S4.3中,所述传递该顶点v核值不增加的影响,具体为:
(a)将该顶点v的每个属于核值增加点的邻居顶点m的候选度减1,若该邻居顶点m的候选度和停留度之和小于k,则删除该邻居顶点m的核值增加点的标签,并更新该邻居顶点m的候选度为当前的候选度和停留度的加和、停留度为零;
(b)对该邻居顶点m的每个邻居顶点w,若该邻居顶点w在Ok中排在该顶点v之后,则将邻居顶点w的停留度减1,否则,对顶点w重复执行如步骤(a)中顶点m的传递操作。
本发明还提供一种动态图下多边更新的单轮核值维护方法,当在社交网络的动态图下删除点或边时,采用动态图下删除点或边时顶点核值维护子方法,该顶点核值维护子方法包括:
S1、确定当前动态图中各顶点的优度数和核值;
S2、基于所有要删除的点或边,更新每个顶点的优度数;
S3、将每个其优度数小于其核值的顶点确定为核值减少点;
S4、基于每个核值减少点的核值,从所有顶点中确定其它遗漏的核值减少点;
S5、更新每个核值减少点的核值和优度数,并重复执行S3,直至不存在核值减少点,得到每个顶点的核值更新值,完成核值维护。
本发明的有益效果是:本发明是一种在动态图中多条边更新的情况下仅通过单轮算法便完成所有顶点核值更新的快速有效的顶点核值维护方法。该发明方法在更新图之前,先维护一个全局有序的节点次序,删除点集或边集的顶点核值维护算法在单轮中一次性删除所有边,并从删除了边的顶点开始遍历,通过不断的迭代直到所有顶点的核值处于稳定状态。本发明方法通过单轮算法便完成了所有顶点的核值维护,减少了图遍历过程中对顶点的冗余计算,缩减了核值维护的时间,尤其对于大规模图而言具有极好的扩展性和稳定性。
进一步,所述S4包括:
确定各核值减少点的每个其核值与该核值减少点的核值相等的邻居顶点,并将每个邻居顶点的优度数减1,若该邻居顶点的优度数小于其核值,将该邻居顶点确定为核值减少点。
进一步,所述S5包括
将每个核值减少点的核值减1并更新优度数,若该核值减少点重复执行S3,否则,则删除该顶点为核值减少点的标签,直至不存在核值减少点,得到每个顶点的核值更新值,完成核值维护。
本发明还提供一种存储介质,所述存储介质中存储有指令,当计算机读取所述指令时,使所述计算机执行如上述任一种动态图下插入点或边时顶点核值维护子方法和/或如上述任一种动态图下删除点或边时顶点核值维护子方法。
附图说明
图1为本发明一个实施例提供的一种动态图下插入点或边时顶点核值维护子方法的流程框图;
图2为本发明一个实施例提供的插入边时顶点核值更新的流程图;
图3为本发明一个实施例提供的插入边时在插入边之前的原图示意图;
图4为图3对应的插入边时将边加入到原图得到的新图示意图;
图5为本发明一个实施例提供的一种动态图下删除点或边时顶点核值维护子方法的流程框图;
图6为本发明一个实施例提供的删除边时顶点核值更新的流程图;
图7为本发明一个实施例提供的删除边时在删除边之前的原图示意图;
图8为图7对应的删除边时在将边从原图中删除后得到的新图示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例一
一种动态图下多边更新的单轮核值维护方法,当在社交网络的动态图下插入点或边时,采用动态图下插入点或边时顶点核值维护子方法100,如图1所示,该顶点核值维护子方法包括:
步骤110、确定当前动态图中各顶点的候选度、核值和停留度,并将各顶点归类,形成多个k-order集合Ok,k为该Ok中各顶点当前的核值;
步骤120、基于所有要插入的点或边,更新每个顶点的候选度;
步骤130、按照k从小到大的顺序,确定一个Ok,基于该Ok中一顶点v的候选度和停留度,判断该顶点v是否是核值增加点;
步骤140、若是,更新该Ok中次序排在其后的邻居顶点的停留度,并对该Ok中次序紧随顶点v的下一顶点执行步骤130;否则,基于该顶点v的停留度,选择下一个顶点执行步骤130或更新该顶点v的候选度和停留度并传递该顶点v核值不增加的影响后选择下一个顶点执行步骤130;其中,若该Ok中所有顶点已遍历完,则将所有不是核值增加点的顶点按次序添加到下一个Ok,并对更新后的下一个Ok执行步骤130,直至遍历完所有Ok,得到每个顶点的核值更新值,完成核值维护。
需要说明的是,每个顶点的核值k的确定为:需要能找一个子图,在这个子图里,每个顶点的度大于等于k,且k是最大的,则该k值为该顶点的核值。k-order构建方法为:a、找该图中度最小的顶点集合,从该集合里随机删除一个顶点,b、之后,按照步骤a的删除顺序,构建出这个k-order.。一个顶点的候选度确定方法为:在k-order里排在该顶点之后的邻居顶点的个数,其中,本文提到的所有邻居顶点均是对于全图来说的。停留度定义为在k-order中排在其前面且位于属于核值增加点的邻居顶点个数。步骤110中,当前动态图中每个顶点的候选度为上次核值维护算法执行完毕后的更新值。
本实施例仅通过一次算法迭代,通过在算法迭代中加入全部的边来减少整体的迭代次数,另外,在迭代过程中减少需要遍历的顶点的个数,将整个维护过程中需要遍历的顶点数目大大减少,所以整个维护过程所需要的时间与现有的算法相比得到显著降低,具有较低的时间复杂度。其次,本实施例的可扩展性强,体现在两个方面,一方面对于以指数规模增长的图来说,加入或删除同等规模的点或边,依然能够以线性规模增长的时间来处理核值的更新。另一方面,对于特定的大规模图而言,加入或删除以指数规模增长的点或边时,维护k核的时间也是呈线性增长。所以,随着原图规模和动态加入或删除的点或边的规模的增长,本发明都能够高效地进行处理,具有很强的可扩展性。另外,对于某个特定的大规模图,在不断的添加边/添加点或者删除边/删除点的过程中,每次维护核值的时间都很稳定,不会出现较大波动,该特点能显著降低系统的整体延时,提高系统的稳定性。
本实施例是一种在动态图中多条边更新的情况下仅通过单轮算法便完成所有顶点核值更新的快速有效的顶点核值维护方法。该发明方法在更新图之前,先维护一个全局有序的节点次序,在单轮中一次性加入所有边,之后按照次序依次对顶点开始遍历,将核值增加的顶点的影响向高次序顶点移动,直到没有顶点的核值发生变化。本发明方法通过单轮算法便完成了所有顶点的核值维护,减少了图遍历过程中对顶点的冗余计算,缩减了核值维护的时间,尤其对于大规模图而言具有极好的扩展性和稳定性。
优选的,更新每个顶点的候选度,具体为:
对每个所加边对应的在Ok中次序在前的顶点的候选度加1,完成各个顶点的候选度更新。
优选的,判断该顶点v是否是核值增加点,具体为:
判断该Ok中顶点v的候选度和停留度的加和是否大于k,若是,则判断顶点v是核值增加点,否则,判断顶点v是非核值增加点。
由于顶点核值为:至少有k个核值大于等于k的邻居顶点,至多有k个核值大于等于k+1的邻居顶点。基于候选度和停留度的定义以及前述维护过程,若该点的候选度和停留度的加和大于该顶点的核值,则说明该顶点的核值可能增加1,则认为该顶点是可能核值变化的点。
优选的,当前动态图中各顶点的停留度设为零,则步骤140包括:
步骤141、若是,对在该Ok中次序排在其后的邻居顶点的停留度加一,并对该Ok中次序紧随顶点v的下一顶点执行S3;若否,执行步骤142;
步骤142、判断该顶点v的停留度是否为零,若是,根据次序排在其后的各顶点的候选度和停留度,选择下一个顶点执行步骤130;若否,执行步骤143;
步骤143、将顶点v的候选度更新为当前的候选度和停留度的加和,将顶点v的停留度更新为零,传递该顶点v核值不能增加的影响,并根据次序排在其后的各顶点的候选度和停留度,选择下一个顶点执行步骤130。
需要说明的是,一个顶点的停留度初始值均为0,经过一个点核值是否改变的判断之后,对k-order中其后的每个邻居顶点的停留度加1。
判断顶点的停留度等于0还是不等于0,是排除其对前面的邻居顶点是否有造成核值影响,当等于0时,说明前面邻居顶点都不是核值增加者,所以不用考虑该顶点,该顶点不会是核值发生变化的顶点,提高计算速度。
优选的,步骤142中,根据次序排在其后的各顶点的候选度和停留度,选择下一个顶点执行步骤130,具体为:
判断该Ok中是否存在次序排在顶点v后的第一个候选度大于k或停留度大于0的顶点u,若是,将顶点u确定为下一顶点并执行步骤130,若否,则该Ok中所有顶点已遍历完。
需要说明的是,在一个k-order中所有顶点的核值相等且均为k,候选度和核值虽然没有直接关系,但是候选度是用来判断当前顶点的核值可能增加的条件,候选度是表示排在当前顶点后面(不限于当前k-order,是对于所有k-order来说,例如2-order中的所有顶点是排在1-order中所有顶点之后的,位于1-order中的当前顶点的部分邻居顶点可能在2-order中,2-order中的邻居顶点也会对该当前顶点的候选度有贡献)的邻居顶点的个数。
对于不是核值增加的顶点v,则对该Ok中次序排在其后的顶点进行判断,可以先通过后面的顶点的候选度和停留度,来初步判断是否可能是核值增加的顶点,然后进行后续的核值维护,提高计算速度,减少时间开销。
优选的,步骤143中,传递该顶点v核值不增加的影响,具体为:
(a)将该顶点v的每个属于核值增加点的邻居顶点m的候选度减1,若该邻居顶点m的候选度和停留度之和小于k,则删除该邻居顶点m的核值增加点的标签,并更新该邻居顶点m的候选度为当前的候选度和停留度的加和、停留度为零;
(b)对该邻居顶点m的每个邻居顶点w,若该邻居顶点w在Ok中排在该顶点v之后,则将邻居顶点w的停留度减1,否则,对顶点w重复执行如步骤(a)中顶点m的传递操作。
需要说明的是,候选度是统计排在其后的邻居顶点个数。该顶点的前面判断过属于核值增加的邻居顶点个数即为该顶点的停留度,若要将这些邻居顶点放到Ok+1中,所以放置之后,这些邻居顶点位于该顶点的后面,所以要将该顶点的候选度加停留度作为该顶点的新的候选度,用于下一次更新。
例如,动态图下插入点或边时k核维护子方法,如图2所示,包括以下步骤:
(11)初始时刻,将所有顶点按照不同的核值分类为不同的k-order,记为OK。每个顶点维护两个度:候选度(CD)和停留度(RD):
CD(v)=|{u∈neighbor(v):v≤u}|,
RD(v)=|u∈neighbor(v):u≤v∧core(u)
=core(v)∧u is a potential candidate|
其中,顶点u是顶点v的邻居顶点,core(u)表示顶点u的核数,core(v)表示顶点v的核数。初始时刻,每个顶点的候选度CD等于上一次更新点或边时计算得到的候选度,每个顶点的停留度被置为0。
(12)遍历所有要插入的边<u,v>,将边<u,v>加入原图,并更新相应顶点的候选度,具体的,如果顶点u的核数小于顶点v的核数,将顶点u的候选度增加1;否则如果顶点u的核数大于顶点v的核数,将顶点v的候选度增加1;否则顶点u的核数等于顶点v的核数,此时如果顶点u的次序在顶点v的次序之前,则将顶点u的候选度增加1,否则将顶点v的候选度增加1。
(13)遍历每一个Ok,将候选者集合VC和新的Ok队列Ok′初始化为空。按照次序遍历到Ok中的某个顶点vi时,如果CD(vi)和RD(vi)之和大于k,跳转到步骤(14),否则如果RD(vi)等于0,跳转到步骤(15),否则跳转到步骤(16)。遍历完所有Ok后整个流程结束;
(14)将vi从Ok中移除并添加到候选者集合中。对于次序大于vi的每一个核数等于k(在Ok中)的邻居顶点,将该邻居的停留度增加1。接着按照步骤(13)继续处理次序紧随vi的下一个顶点;
(15)找到Ok中次序在vi之后的第一个满足候选度CD大于k或者停留度RD大于0的顶点vj。如果不能找到满足这一条件的vj,跳转到步骤(17),否则将vi,…,vj-1从Ok中移除并按序追加到Ok′中去(另一个空集合)。接着跳转到步骤(13)从vj开始继续处理Ok中顶点;
(16)将vi从Ok中移除并追加到Ok′,更新vi的候选度CD为当前候选度CD和停留度RD之和,停留度设置为0,传递vi核数不能增加的影响,然后跳转到步骤(13)继续处理次序紧随vi的下一个顶点。具体为:
(161)初始一个空的队列,对于顶点vi的每一个在候选者集合中的邻居,将该邻居顶点的候选度CD减1,如果该邻居的候选度和停留度之和小于k,则将该邻居顶点加入到队列中;
(162)若队列为空,则结束流程;否则从队列中移除一个顶点u,更新该顶点的候选度为候选度和停留度之和,停留度设置为0,将该顶点从候选者集合中移除并追加到Ok′;
(163)对于步骤(162)中被移除的顶点u,对于顶点u的每个核数等于k的邻居w,如果顶点vi的次序在顶点w之前,则跳转到步骤(164),否则如果顶点u的次序在顶点w之前并且顶点w在候选者集合中,则跳转到步骤(165),否则如果顶点w在顶点u之前且顶点w在候选者集合中,跳转到步骤(166);
(164)将顶点w的停留度减少1;
(165)将顶点w的停留度减少1,如果顶点w的候选度和停留度之和小于等于K并且顶点w未被添加到过队列中,则将顶点w添加到队列中;
(166)将顶点w的候选度减少1,如果顶点w的候选度和停留度之和小于等于K并且顶点w未被添加到过队列中,则将顶点w添加到队列中。
(17)此时对于候选者集合VC中的每个顶点,将其停留度设置为0,核数增加1,并按照顶点在Ok中的顺序依次添加到Ok+1的前面,Ok′成为新的Ok。接着跳转到步骤(13)继续处理Ok+1。
进一步,具体示例如图3和图4所示,高效的动态图下在插入边时核值维护方法如下:
1)图3中共有9个顶点,编号为0-8,初始时刻每个顶点的核值为{1,1,1,2,2,2,2,2,2}。为所有节点建立k-order,其中O1={2,1,0},O2={5,4,3,6,8,7}。计算每个顶点的停留度被置为0,根据公式计算每个顶点的候选度为CD(0)=1,CD(1)=1,CD(2)=1,CD(3)=1,CD(4)=2,CD(5)=2,CD(6)=2,CD(7)=0,CD(8)=1。
2)图4中3条点划线是新加入的边。将这3条新加入的边加入原图,并更新相应顶点的候选度。加入边<2,3>,CD(2)=2,加入边<5,7>,CD(5)=3,加入边<6,4>,CD(4)=3。
3)遍历O1中的顶点,将候选者集合VC和新的Ok队列Ok′初始化为空。先访问顶点2,因为CD(2)+RD(2)=2>1,将顶点2加入到候选者集合,将顶点2的核值等于1且次序大于顶点2的邻居的停留度加1,即RD(1)=1。接下来访问顶点1,因为CD(1)+RD(1)=2>1,将顶点1加入到候选者集合,将顶点1的核值等于1且次序大于顶点1的邻居的停留度加1,即RD(0)=1。接下来访问顶点0,因为CD(0)+RD(0)=2>1,将顶点0加入到候选者集合,将顶点0的核值等于1且次序大于顶点0的邻居的停留度加1,此时没有邻居满足条件。此时将顶点2、1、0的停留度置0及核值加1,并加入到O2中。
4)遍历O2中的顶点,将候选者集合VC和新的Ok队列Ok′初始化为空。先访问顶点2,CD(2)+RD(2)=2,且CD(2)不等于0,往后找到第一个候选度大于k或者停留度大于0的顶点,即顶点5。将顶点2、1、0从O2中移除追加到O2′中。因为CD(5)+RD(5)=3>2,将顶点5加入到候选者集合中,将顶点5的核值等于2且次序大于顶点5的邻居的停留度加1,即RD(4)=1,RD(6)=1,RD(7)=1。接下来访问顶点4,因为CD(4)+RD(4)=4>2,将顶点4加入到候选者集合中,将顶点4的核值等于2且次序大于顶点4的停留度加1,即RD(3)=1,RD(6)=2,RD(7)=2。接下来访问顶点3,因为CD(3)+RD(3)=2,且CD(3)不等于0,往后找到第一个候选度大于k或者停留度大于0的顶点,即顶点6。接下来访问顶点6,因为CD(6)+RD(6)=4>2,将顶点6加入到候选者集合中,将顶点6的核值等于2且次序大于顶点6的邻居的停留度加1,即RD(8)=1,RD(7)=3。接下来访问顶点8,因为CD(8)+RD(8)=2,且CD(8)不等于0,往后找到第一个候选度大于k或者停留度大于0的顶点,即顶点7。接下来处理顶点7,因为CD(7)+RD(7)=4>2,将顶点7加入到候选者集合中,将顶点7的核值等于2且次序大于顶点7的邻居的停留度加1,此时没有邻居满足条件。此时将顶点5、4、3、7的停留度置0及核值加1,并加入到O3中。
5)接下来遍历O3,首先访问顶点5,CD(5)+RD(5)=3,且CD(5)不等于0,往后找到第一个候选度大于k或者停留度大于0的顶点,此时无法找到满足条件的顶点,结束遍历O3。此时,所有Ok都遍历完毕,算法结束。更新后每个顶点的核值为{2,2,2,2,3,3,3,3,2}。
实施例二
一种动态图下多边更新的单轮核值维护方法,当在社交网络的动态图下删除点或边时,采用动态图下删除点或边时顶点核值维护子方法200,如图5所示,该顶点核值维护子方法包括:
步骤210、确定当前动态图中各顶点的优度数和核值;
步骤220、基于所有要删除的点或边,更新每个顶点的优度数;
步骤230、将每个其优度数小于其核值的顶点确定为核值减少点;
步骤240、基于每个核值减少点的核值,从所有顶点中确定其它遗漏的核值减少点;
步骤250、更新每个核值减少点的核值和优度数,并重复执行步骤230,直至不存在核值减少点,得到每个顶点的核值更新值,完成核值维护。
需要说明的是,一个顶点的优度数是核值大于等于该顶点核值的邻居顶点的个数。
本实施例是一种在动态图中多条边更新的情况下仅通过单轮算法便完成所有顶点核值更新的快速有效的顶点核值维护方法。该发明方法在更新图之前,先维护一个全局有序的节点次序,删除点集或边集的顶点核值维护算法在单轮中一次性删除所有边,并从删除了边的顶点开始遍历,通过不断的迭代直到所有顶点的核值处于稳定状态。本发明方法通过单轮算法便完成了所有顶点的核值维护,减少了图遍历过程中对顶点的冗余计算,缩减了核值维护的时间,尤其对大规模图而言具有极好的扩展性和稳定性。
优选的,步骤240包括:
确定各核值减少点的每个其核值与该核值减少点的核值相等的邻居顶点,并将每个邻居顶点的优度数减1,若该邻居顶点的优度数小于其核值,将该邻居顶点确定为核值减少点。
优选的,步骤250包括
将每个核值减少点的核值减1并更新优度数,若该核值减少点重复执行步骤230,否则,则删除该顶点为核值减少点的标签,直至不存在核值减少点,得到每个顶点的核值更新值,完成核值维护。
优度数MCD表示如下:
MCD(v)=|{u∈neighbor(v):core(u)≥core(v)}|。
具体示例如图6-图8所示,高效的动态图下在删除边时核值维护方法如图6所示如下:
1)图7是删除边之前的图。图中共有6个节点,编号为0-5,初始时刻每个顶点的核值为{2,2,2,2,2,2}。每个顶点的cd值(cd[u]=MCD(u))设置为0,每个顶点的优度数分别为{4,2,4,3,2,3}。图8是删除掉边集{<0,5>,<0,2>,<2,3>,<4,5>}之后的图。
2)遍历所有要删除的边,更新每个顶点的优度数。删除边<0,5>,MCD(0)=3,MCD(5)=2。删除边<0,2>,MCD(0)=2,MCD(2)=3。删除边<2,3>,MCD(3)=2,MCD(2)=2。删除边<4,5>,MCD(4)=1,MCD(5)=1。最后每个顶点的优度数分别为{2,2,2,2,1,1}。
3)在2)中,发现顶点4和顶点5的优度数小于顶点的核值,将顶点4和5加入到集合Su中。Su={4,5}。
4)将图中顶点的访问标识位和剔除标识位设置为0。
5)对于当前集合Su中的每个顶点,removed[4]=visited[4]=1,cd[4]=MCD(4)=1,removed[5]=visited[5]=1,cd[5]=MCD(5)=1。初始化空栈Stk,将顶点4和5依次压入到栈Stk。
6)将顶点5从栈中弹出来,将顶点5的邻居顶点3的cd值减少1,此时cd[3]等于1小于其当前核值2,将顶点3压入栈中并设置removed[3]=1。
7)将顶点3从栈中弹出来,将顶点3的邻居0的cd值减少1,此时cd[0]等于1小于其当前核值2,将顶点0压入栈中并设置removed[0]=1。
8)将顶点0从栈中弹出来,将顶点0的邻居1的cd值减少1,此时cd[1]等于1小于其当前核值2,将顶点1压入栈中并设置removed[1]=1。
9)将顶点1从栈中弹出来,将顶点1的邻居2的cd值减少1,此时cd[2]等于1小于其当前核值2,将顶点2压入栈中并设置removed[2]=1。
10)将顶点2从栈中弹出来,此时顶点2不存在removed为false的邻居,没有新节点压入到栈中。
11)将顶点4从栈中弹出来,此时顶点4不存在removed为false的邻居,没有新节点压入到栈中。
12)此时栈为空,将所有removed为true的节点的核值减少1,此时每个节点的核值分别为{1,1,1,1,1,1}。
13)重新计算每个顶点的优度数,此时不存在节点的优度数小于其核值1,所以Su为空,算法结束。最终每个节点的核值为{1,1,1,1,1,1}。
实施例三
一种存储介质,存储介质中存储有指令,当计算机读取所述指令时,使所述计算机执行如实施例一所述的任一种动态图下插入点或边时顶点核值维护子方法和/或如实施例二所述的任一种动态图下删除点或边时顶点核值维护子方法。
相关技术方案同实施例一和实施例二,在此不再赘述。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种动态图下多边更新的单轮核值维护方法,其特征在于,当在社交网络的动态图下插入点或边时,采用动态图下插入点或边时顶点核值维护子方法,该顶点核值维护子方法包括:
S1、确定当前动态图中各顶点的候选度、核值和停留度,并将各顶点归类,形成多个k-order集合Ok,k为该Ok中各顶点当前的核值;
S2、基于所有要插入的点或边,更新每个顶点的候选度;
S3、按照k从小到大的顺序,确定一个Ok,基于该Ok中一顶点v的候选度和停留度,判断该顶点v是否是核值增加点;
S4、若是,更新该Ok中次序排在其后的邻居顶点的停留度,并对该Ok中次序紧随顶点v的下一顶点执行S3;否则,基于该顶点v的停留度,选择下一个顶点执行S3或更新该顶点v的候选度和停留度并传递该顶点v核值不增加的影响后选择下一个顶点执行S3;
其中,若该Ok中所有顶点已遍历完,则将所有不是核值增加点的顶点按次序添加到下一个Ok,并对更新后的下一个Ok执行S3,直至遍历完所有Ok,得到每个顶点的核值更新值,完成核值维护。
2.根据权利要求1所述的一种动态图下多边更新的单轮核值维护方法,其特征在于,所述更新每个顶点的候选度,具体为:
对每个所加边对应的在Ok中次序在前的顶点的候选度加1,完成各个顶点的候选度更新。
3.根据权利要求1所述的一种动态图下多边更新的单轮核值维护方法,其特征在于,所述判断该顶点v是否是核值增加点,具体为:
判断该Ok中顶点v的候选度和停留度的加和是否大于k,若是,则判断顶点v是核值增加点,否则,判断顶点v是非核值增加点。
4.根据权利要求1至3任一项所述的一种动态图下多边更新的单轮核值维护方法,其特征在于,所述当前动态图中各顶点的停留度预设为零;
则S4包括:
S4.1、若是,对在该Ok中次序排在其后的邻居顶点的停留度加1,并对该Ok中次序紧随顶点v的下一顶点执行S3;若否,执行S4.2;
S4.2、判断该顶点v的停留度是否为零,若是,根据次序排在其后的各顶点的候选度和停留度,选择下一个顶点执行S3;若否,执行S4.3;
S4.3、将顶点v的候选度更新为当前的候选度和停留度的加和,将顶点v的停留度更新为零,传递该顶点v核值不能增加的影响,并根据次序排在其后的各顶点的候选度和停留度,选择下一个顶点执行S3。
5.根据权利要求4所述的一种动态图下多边更新的单轮核值维护方法,其特征在于,所述S4.2中,所述根据次序排在其后的各顶点的候选度和停留度,选择下一个顶点执行S3,具体为:
判断该Ok中是否存在次序排在顶点v后的第一个候选度大于k或停留度大于0的顶点u,若是,将顶点u确定为下一顶点并执行S3,若否,则该Ok中所有顶点已遍历完。
6.根据权利要求4所述的一种动态图下多边更新的单轮核值维护方法,其特征在于,所述S4.3中,所述传递该顶点v核值不增加的影响,具体为:
(a)将该顶点v的每个属于核值增加点的邻居顶点m的候选度减1,若该邻居顶点m的候选度和停留度之和小于k,则删除该邻居顶点m的核值增加点的标签,并更新该邻居顶点m的候选度为当前的候选度和停留度的加和、停留度为零;
(b)对该邻居顶点m的每个邻居顶点w,若该邻居顶点w在Ok中排在该顶点v之后,则将邻居顶点w的停留度减1,否则,对顶点w重复执行如步骤(a)中对顶点m的传递操作。
7.一种动态图下多边更新的单轮核值维护方法,其特征在于,当在社交网络的动态图下删除点或边时,采用动态图下删除点或边时顶点核值维护子方法,该顶点核值维护子方法包括:
S1、确定当前动态图中各顶点的优度数和核值;
S2、基于所有要删除的点或边,更新每个顶点的优度数;
S3、将每个其优度数小于其核值的顶点确定为核值减少点;
S4、基于每个核值减少点的核值,从所有顶点中确定其它遗漏的核值减少点;
S5、更新每个核值减少点的核值和优度数,并重复执行S3,直至不存在核值减少点,得到每个顶点的核值更新值,完成核值维护。
8.根据权利要求7所述的一种动态图下多边更新的单轮核值维护方法,其特征在于,所述S4包括:
确定各核值减少点的每个其核值与该核值减少点的核值相等的邻居顶点,并将每个邻居顶点的优度数减1,若该邻居顶点的优度数小于其核值,将该邻居顶点确定为核值减少点。
9.根据权利要求7或8所述的一种动态图下多边更新的单轮核值维护方法,其特征在于,所述S5包括
将每个核值减少点的核值减1并更新优度数,若该核值减少点重复执行S3,否则,则删除该顶点为核值减少点的标签,直至不存在核值减少点,得到每个顶点的核值更新值,完成核值维护。
10.一种存储介质,其特征在于,所述存储介质中存储有指令,当计算机读取所述指令时,使所述计算机执行上述如权利要求1至6任一项所述的任一种动态图下插入点或边时顶点核值维护子方法和/或如权利要求7至9任一项所述的任一种动态图下删除点或边时顶点核值维护子方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910435764.6A CN110222055B (zh) | 2019-05-23 | 2019-05-23 | 一种动态图下多边更新的单轮核值维护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910435764.6A CN110222055B (zh) | 2019-05-23 | 2019-05-23 | 一种动态图下多边更新的单轮核值维护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110222055A true CN110222055A (zh) | 2019-09-10 |
CN110222055B CN110222055B (zh) | 2021-08-20 |
Family
ID=67817872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910435764.6A Active CN110222055B (zh) | 2019-05-23 | 2019-05-23 | 一种动态图下多边更新的单轮核值维护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110222055B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015980A (zh) * | 2020-08-14 | 2020-12-01 | 山东大学 | 一种基于(α,β)-核的二分图推荐方法 |
CN112380267A (zh) * | 2020-10-21 | 2021-02-19 | 山东大学 | 一种基于隐私图的社区发现方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136309A (zh) * | 2011-11-21 | 2013-06-05 | 微软公司 | 通过基于核的学习对社交强度进行建模 |
US20150019639A1 (en) * | 2013-07-10 | 2015-01-15 | Facebook, Inc. | Network-aware Product Rollout in Online Social Networks |
CN104462260A (zh) * | 2014-11-21 | 2015-03-25 | 深圳大学 | 一种基于k-核的社区搜索算法 |
CN104598605A (zh) * | 2015-01-30 | 2015-05-06 | 福州大学 | 一种社交网络中的用户影响力评估方法 |
CN106445685A (zh) * | 2016-09-21 | 2017-02-22 | 华中科技大学 | 一种高效的分布式大规模动态图k核维护方法 |
-
2019
- 2019-05-23 CN CN201910435764.6A patent/CN110222055B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136309A (zh) * | 2011-11-21 | 2013-06-05 | 微软公司 | 通过基于核的学习对社交强度进行建模 |
US20150019639A1 (en) * | 2013-07-10 | 2015-01-15 | Facebook, Inc. | Network-aware Product Rollout in Online Social Networks |
CN104462260A (zh) * | 2014-11-21 | 2015-03-25 | 深圳大学 | 一种基于k-核的社区搜索算法 |
CN104598605A (zh) * | 2015-01-30 | 2015-05-06 | 福州大学 | 一种社交网络中的用户影响力评估方法 |
CN106445685A (zh) * | 2016-09-21 | 2017-02-22 | 华中科技大学 | 一种高效的分布式大规模动态图k核维护方法 |
Non-Patent Citations (5)
Title |
---|
NA WANG ET AL: "Parallel Algorithm for Core Maintenance in Dynamic Graphs", 《2017 IEEE 37TH INTERNATIONAL CONFERENCE ON DISTRIBUTED COMPUTING SYSTEMS (ICDCS)》 * |
RONG-HUA LI ET AL: "Efficient Core Maintenance in Large Dynamic Graphs", 《IEEE TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING》 * |
SABEUR ARIDHI ET AL: "Distributed k-core decomposition and maintenance in large dynamic graphs", 《PROCEEDINGS OF THE 10TH ACM INTERNATIONAL CONFERENCE ON DISTRIBUTED AND EVENT-BASED SYSTEMS》 * |
李阅志 等: "基于k-核过滤的社交网络影响最大化算法", 《计算机应用》 * |
邓观明: "基于混合的K核影响力的标签传播算法", 《信息通信》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015980A (zh) * | 2020-08-14 | 2020-12-01 | 山东大学 | 一种基于(α,β)-核的二分图推荐方法 |
CN112015980B (zh) * | 2020-08-14 | 2024-03-12 | 山东大学 | 一种基于(α,β)-核的二分图推荐方法 |
CN112380267A (zh) * | 2020-10-21 | 2021-02-19 | 山东大学 | 一种基于隐私图的社区发现方法 |
CN112380267B (zh) * | 2020-10-21 | 2022-08-05 | 山东大学 | 一种基于隐私图的社区发现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110222055B (zh) | 2021-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Needham et al. | Graph algorithms: practical examples in Apache Spark and Neo4j | |
CN104063507B (zh) | 一种图计算方法及系统 | |
Ahmed et al. | Single-pass incremental and interactive mining for weighted frequent patterns | |
EP2924594B1 (en) | Data encoding and corresponding data structure in a column-store database | |
CN109255586B (zh) | 一种面向电子政务办事的在线个性化推荐方法 | |
CN104952032B (zh) | 图的处理方法、装置以及栅格化表示及存储方法 | |
CN103678436B (zh) | 信息处理系统和信息处理方法 | |
CN105929690A (zh) | 一种基于分解多目标进化算法的柔性车间鲁棒调度方法 | |
CN111340303A (zh) | 基于新型混合蛙跳算法的旅行商路线规划方法 | |
CN110222055A (zh) | 一种动态图下多边更新的单轮核值维护方法 | |
CN111553279A (zh) | 兴趣点的表征学习、识别方法、装置、设备及存储介质 | |
CN115203550A (zh) | 一种增强邻居关系的社交推荐方法及系统 | |
Mula et al. | Birough programming approach for solving bi-matrix games with birough payoff elements | |
Ben-Said et al. | Using decomposition-based multi-objective algorithm to solve Selective Pickup and Delivery Problems with Time Windows | |
CN111966916A (zh) | 一种推荐方法、装置、电子设备及计算机可读存储介质 | |
Yelmewad et al. | Parallel iterative hill climbing algorithm to solve TSP on GPU | |
Wong et al. | State-space decomposition for reinforcement learning | |
Tang et al. | Dual Bounds from Decision Diagram-Based Route Relaxations: An Application to Truck-Drone Routing | |
CN113392143B (zh) | 一种面向多关系图的可达性查询索引的构建与处理方法 | |
CN109582802A (zh) | 一种实体嵌入方法、装置、介质及设备 | |
Choi et al. | Optimization of dominance testing in skyline queries using decision trees | |
CN112084012A (zh) | FP-Growth优化算法、存储介质及电子装置 | |
CN112016006A (zh) | 一种基于Trust-Walker的信任推荐模型 | |
CN112308597B (zh) | 一种在竞争环境中根据影响运动用户选择设施地址的方法 | |
Arge et al. | Computing betweenness centrality in external memory |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |