CN104063507A - 一种图计算方法及引擎 - Google Patents

一种图计算方法及引擎 Download PDF

Info

Publication number
CN104063507A
CN104063507A CN201410324671.3A CN201410324671A CN104063507A CN 104063507 A CN104063507 A CN 104063507A CN 201410324671 A CN201410324671 A CN 201410324671A CN 104063507 A CN104063507 A CN 104063507A
Authority
CN
China
Prior art keywords
value
node
data
route
migration
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
Application number
CN201410324671.3A
Other languages
English (en)
Other versions
CN104063507B (zh
Inventor
王绪刚
吴桐
宋磊
张锐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fun Interactive (beijing) Technology Co Ltd
Original Assignee
Fun Interactive (beijing) Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fun Interactive (beijing) Technology Co Ltd filed Critical Fun Interactive (beijing) Technology Co Ltd
Priority to CN201410324671.3A priority Critical patent/CN104063507B/zh
Publication of CN104063507A publication Critical patent/CN104063507A/zh
Application granted granted Critical
Publication of CN104063507B publication Critical patent/CN104063507B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/51Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种图计算方法及引擎,所述计算方法为:A.对图的原始关系数据进行索引,获得索引数据,所述图的顶点和边上对应所述的索引数据;B.选择所述图的一个或多个顶点为起始节点,进行广度优先或深度优先的多步游走,获得包括用于候选的多个结束节点的游走拓扑图,基于广度优先或深度优先的图游走算法、根据游走路径中参与的顶点和边对应的索引数据计算所述起始节点到达所述结束节点的到达概率;C.对计算出的所述到达概率进行排序。本发明的图计算方法可获得去流行、强关系的结果;图计算引擎可对各类图数据进行索引,支持多种图算法,支持自定义图计算的拓扑图,支持索引数据/拓扑图/共享库数据的实时增加/删除/修改。

Description

一种图计算方法及引擎
技术领域
本发明涉及图计算领域,尤其是涉及一种图计算方法及引擎。
背景技术
图计算(graph computation)对于关系构建、用户群分析和发现、属性传播等有很重要的作用。在大数据时代,图的规模大到一定程度后,单机就很难解决大规模的图计算了。因此,进行大规模数据的图算法开发和调试具有重要意义。目前比较成熟的方案有Graphx和GraphLab。其中GraphLab项目的一个分支是GraphChi,该框架能够在单机上完成大数据的图计算。
GraphChi可以在个人计算机上高效的进行大规模的图计算,它有自己原创的从硬盘获取图数据的优化算法,并且支持流图(streaming graph)更新以及在计算中改变图的结构。
GraphChi在进行大规模图计算的时候,将图分成了不同的分片,这些分片可以在内存中并行处理,分片的数据更新通过连续写入来实现,以最小化硬盘上的随机操作,合理使用机器内存。
GraphChi利用个人计算机上的海量硬盘,将图数据存储在硬盘上,为提升硬盘的数据存取效率,GraphChi使用了PSW(Parallel Sliding Window)算法来解决这一关键的性能提升问题。PSW通过source shards对1个分片中所有的vertex进行排序,这样每个分片本质上都被分割成由vertex组成的块,同时这些vertex又会与其它分片关联。
GraphChi和GraphLab一样也是基于vertex-centric模型来实现的,并行且异步(边上数据发生的变化对后续计算是立即可见的)。
GraphChi通过vertex拆分来实现并行,设置一个master vertex,多个mirror vertex,各mirror vertex处理自己分内的数据,最终由mastervertex进行汇总,然后master vertex将汇总后的数据对mirror vertex进行更新,同时也更新相关边上的数据。
GraphChi的执行模型为“Gather-Apply-Scatter”,具体介绍如下:
每个vertex每一轮迭代经过“Gather-Apply-Scatter”三个阶段。
(1)Gather阶段
计算相关的vertex从邻接vertex和自身收集数据,这一阶段,vertex和边上的数据都是只读的。
(2)Apply阶段
mirror vertex将Gather阶段计算的结果发给master vertex,由其进行汇总及进一步的计算,然后更新master vertex的数据,并同步到mirror vertex中。这一阶段,vertex的数据可以修改,边上的数据不可以修改。
(3)Scatter阶段
vertex数据更新完成之后,更新边上的数据,这一阶段,边上的数据是可写的,vertex上的数据是只读的。
并行计算的同步通过master vertex和mirror vertex来实现,mirrorvertex相当于每个vertex对外的一个接口人,这样就把数据通信抽象成了vertex的数据交换行为。
虽然GraphChi能够实现在个人计算机上进行大规模的图计算,但仍存在一些不足和缺陷:如GraphChi无建立索引模块,不支持自定义图计算的拓扑图,不支持插件的热插拔等。因此,上述现有的图计算方法及引擎在使用上仍存在有不便与缺陷,而亟待加以进一步改进。
发明内容
本发明的目的是提供一种可以获得去流行、强关系的结果的图计算方法。
为实现上述目的,本发明采用如下技术方案:
一种图计算方法,主要包括以下步骤:A.对图的原始关系数据进行索引,获得索引数据,所述图的顶点和边上对应所述的索引数据;B.选择所述图的一个或多个顶点为起始节点,进行广度优先或深度优先的多步游走,获得包括用于候选的多个结束节点的游走拓扑图,基于广度优先或深度优先的图游走算法、根据游走路径中参与的顶点和边对应的索引数据计算所述起始节点到达所述结束节点的到达概率;C.对计算出的所述到达概率进行排序。
进一步地,所述步骤B中对到达概率的计算包括两次取对数方式的降权操作。
进一步地,所述到达概率reach_prob的计算公式为:
reach _ prob ( startnode , candidate _ node ) = candidate _ value × ( 1 rev _ eg _ candidate _ node _ size ) eg _ popfactor ,
其中,eg_popfactor为游走终点图的配置参数,为浮点值;
rev_eg_candidate_node_size为当前的候选节点在终点图的反向图中的出边的个数;
candidate_value的计算公式为:
Ⅰ.当为两步游走时,则所述拓扑图包括起始图和终点图,此时candidate_value=∑route_valuesg_popfactor×end_valueeg_popfactor×walk_prob;
Ⅱ.当为三步以上游走时,则所述拓扑图包括起始图、中间图和终点图,设有m个中间图,m为自然数,此时
candidate _ value = walk _ prob × Σroute _ value sg _ popfactor × route _ value 1 rg 1 _ popfactor × . . . × route _ value m rg m _ popfactor × end _ value eg _ popfactor ;
其中,walk_prob为本次拓扑图游走的配置参数,为浮点值;sg_popfactor为起始图的配置参数,为浮点值;rgm_popfactor为第m个中间图的配置参数,为浮点值;
route_value的计算公式为:
route _ value = sg _ rp _ weight × 1 start _ node _ size × 1 sg _ scalevalue × log 10 sg _ max _ log _ value x ,
其中x的值如下:
if(route_node_size>sg_max_log_value||route_node_size<sg_min_log_value){
x=sg_max_log_value-1;
}else{
x=route_node_size;
};
其中,sg_rp_weight为起始图中对应的边的权重,start_node_size为起始节点在起始图中的对应的边的出边的个数;sg_scalevalue为起始图的浮点型的配置参数,sg_max_log_value和sg_min_log_value为起始图的浮点型的配置参数,route_node_size为route node在起始图的反向图中的出边的个数;
end_value的计算公式如下:
end _ value = eg _ rp _ weight &times; 1 eg _ scalevalue &times; log 10 eg _ max _ log _ value x ,
其中x的值如下:
if(eg_route_node_size>eg_max_log_value||eg_route_node_size<eg_min_log_value){
x=eg_max_log_value-1;
}else{
x=eg_route_node_size;
};
其中,eg_rp_weight为终点图中对应的边的权重,eg_scalevalue为终点图的浮点型的配置参数,eg_max_log_value和eg_min_log_value为终点图的浮点型的配置参数,eg_route_node_size为route node在终点图中对应的边的出边个数。
进一步地,所述计算的中间结果使用原子操作存储于预先设定的一个或多个数组中,所述数组的长度为结束节点空间中包含的节点个数。
进一步地,计算所述到达概率时,首先分离路径无关和路径相关的计算,路径无关的计算在计算初始化的时候一次性计算完。
本发明的另一个目的是提供应用上述图计算方法的图计算引擎,使其能够对各类图数据进行索引,支持自定义图计算的拓扑图,支持多种图算法,具有高通用性与高扩展性,克服现有的图计算引擎的不足。采用如下技术方案:
一种应用所述的图计算方法的图计算引擎,包括建立数据索引模块以及图计算平台模块,所述建立数据索引模块用于对原始关系数据进行索引,获得索引数据;所述图计算平台模块包括主体平台及功能插件,所述功能插件包含执行计算所述到达概率的函数,所述主体平台可通过与所述功能插件的接口协议调用所述函数。
进一步地,所述功能插件采用可动态加载的共享库形式,所述主体平台支持所述功能插件的热插拔。
进一步地,所述主体平台包括:索引数据管理模块,用于从硬盘载入指定索引数据到内存、释放索引数据所占内存、替换现有的索引数据;共享库管理模块,用于动态载入共享库文件,获取共享库中回调函数的函数指针,释放、关闭或替换共享库,增加、删除或修改共享库之间的依赖关系;拓扑图管理模块,用于增加或删除游走拓扑图、修改游走拓扑图的数据、锁住与解锁拓扑图、选择拓扑图按照广度优先游走或深度优先游走;线程管理模块,用于创建线程、初始化线程所需数据、回调共享库中回调函数;TCP/IP服务管理模块,用于并发接受TCP/IP的请求、返回结果;以及平台配置管理模块,用于解析所述主体平台各模块对应的配置文件。
进一步地,所述主体平台数据与拓扑图均设置有操作锁,当所述主体平台数据进行修改时,或所述拓扑图及其相关数据进行删除/修改时,所述操作锁执行锁定功能。
进一步地,所述建立数据索引模块采用C++编写的共享库,采用hashtable提供查询服务,采用POSIX syscall实现与Linux系统的交互。
由于采用上述技术方案,本发明至少具有以下优点:
1、本发明的图计算方法可以获得去流行、强关系的结果,对在线社交网络媒体等的用户关系分析、用户群体发现和用户特征发现效果显著。
2、本发明的图计算引擎支持基于广度优先游走或深度优先游走的多种图算法,从而增强了的通用性和适用性。
3、本发明的图计算引擎能够对各类图数据进行索引,支持节点/边上存储自定义的结构体数据,支持TB级原始文件的索引建立与固化,具有高通用性。
4、图计算平台的数据结构、锁机制、功能模块的插件式设计与实现为平台的索引/拓扑图/共享库数据的实时增加/删除/修改,实现插件的热插拔提供了支持和保障。
5、本发明的图计算引擎可以从主体平台的配置文件中获取拓扑图的索引数据/共享库/游走路径的信息,从而构造相应的拓扑图以对外提供基于该拓扑图的计算服务,所以本引擎支持自定义的图计算拓扑图。
6、本发明的图计算引擎支持基于功能的分布式、具有高扩展性。
7、将本发明应用在实际生产中,可用于在线社交网络媒体等的用户关系分析、用户群体发现和用户特征发现上。将该社交网络的各类人群数据以及关系数据经过本引擎的处理计算得到最终的数据对社交广告的投放人群进行指导、品牌代言人选取的决策支持、商品销售转化率提高等方面能起到非常好的效果。
附图说明
上述仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,以下结合附图与具体实施方式对本发明作进一步的详细说明。
图1是本发明的图计算引擎结构示意图。
图2是基于广度优先的两步游走的拓扑图示例。
图3是基于广度优先的三步游走的拓扑图示例。
具体实施方式
本发明的图计算方法及引擎基于如下两个主要步骤:
第一步,对数据进行索引;第二步,实现基于“数据、共享库、拓扑图”,“支持共享库的热插拔”设计的图计算平台与图游走算法的功能插件。
具体而言,第一步对数据进行索引可采用C++编写的.so共享库的形式实现。代码采用模板提供对边和节点所带数据的支持。采用mmap把数据从硬盘载入内存。使用hash table提供查询服务。使用一些stl coll和algorithm实现一些常规功能。使用POSIX syscall实现与Linux系统的交互。
第二步,实现基于“数据、共享库、拓扑图”,“支持共享库的热插拔”设计的图计算平台与图游走算法的功能插件。该步骤的实现过程如下:
(1)图计算平台:
在图计算平台中,是这样定义计算的:任意一次计算是由“数据、共享库、拓扑图”这三元组组成并唯一确定,其中计算的框架是“拓扑图”,计算的血肉为“拓扑图”中所有节点与边上的“数据”和“共享库”。“拓扑图”决定了计算中图游走的路径,“数据”决定了节点/边上参与计算的索引数据,“共享库”决定了计算中对节点/边上的索引数据进行的具体操作。
具体而言,如图1所示,图计算平台的设计如下:首先,图计算平台从组成上分两个部分,一是主体平台,二是功能插件。其中,1)主体平台:是基于平台对计算的定义而实现的,它实现了索引数据管理、共享库管理、拓扑图管理、线程管理、平台配置管理、TCP/IP服务管理这六大管理功能,支持平台运行中实时地修改索引数据、共享库、拓扑图和平台配置;2)功能插件:主要实现了节点/边上的具体操作,其内的函数要遵照与主体平台回调函数的接口协议来实现,以便在载入后被主体平台成功回调。功能插件以共享库的形式存在,且是动态加载的,主体平台通过共享库管理模块来对功能插件进行添加、删除与修改。
(2)图游走的算法:
通过计算拓扑图中两个节点的到达概率来进行关系分析、关系预测、推荐等。
首先以两步游走为例进行拓扑图计算,如图2所示,选择所述图的一个顶点为起始节点,进行基于广度优先的游走,以图中的startnode为起点,经过起始图(start graph,简记为sg)与终点图(end graph,简记为eg)的广度优先的游走,最终得到4个候选节点(candidate_node),分别计算从start node到这4个候选节点的到达概率(reach_prob),并以到达概率从高到低对这4个候选节点进行降序排序。
本算法的核心即计算到达概率(reach_prob),公式如下:
reach _ prob ( startnode , candidate _ node ) = candidate _ value &times; ( 1 rev _ eg _ candidate _ node _ size ) eg _ popfactor
其中eg_popfactor为end graph的配置参数,为浮点值;rev_eg_candidate_node_size为当前计算的candidate_node在end graph的反向图中的出边的个数;candidate_value的计算公式如下:
candidate_value=∑route_valuesg_popfactor×end_valueeg_popfactor×walk_prob
其中sg_popfactor为start graph的配置参数,为浮点值;walk_prob本次拓扑图游走的配置参数,为浮点值;
route_value的计算公式如下:
route _ value = sg _ rp _ weight &times; 1 start _ node _ size &times; 1 sg _ scalevalue &times; log 10 sg _ max _ log _ value x ,
其中x的值如下:
if(route_node_size>sg_max_log_value||route_node_size<sg_min_log_value){
x=sg_max_log_value-1;
}else{
x=route_node_size;
}
其中sg_rp_weight为start graph中对应的边的权重,start_node_size为start node在start graph中的对应的边的出边的个数;sg_scalevalue为start graph的浮点型的配置参数,sg_max_log_value和sg_min_log_value为start graph的浮点型的配置参数,route_node_size为route node在start graph的反向图中的出边的个数;
end_value的计算公式如下:
end _ value = eg _ rp _ weight &times; 1 eg _ scalevalue &times; log 10 eg _ max _ log _ value x ,
其中x的值如下:
if(eg_route_node_size>eg_max_log_value||eg_route_node_size<eg_min_log_value){
x=eg_max_log_value-1;
}else{
x=eg_route_node_size;
}
其中eg_rp_weight为end graph中对应的边的权重,eg_scalevalue为end graph的浮点型的配置参数,eg_max_log_value和eg_min_log_value为end graph的浮点型的配置参数,eg_route_node_size为route node在end graph中对应的边的出边个数。
当为三步以上游走的时候,游走拓扑图包括起始图、中间图、终点图,每条游走路径的到达概率就是起始图的到达概率乘以各中间图的到达概率再乘以终点图的到达概率。设有m个中间图,m为自然数,第i个中间图记为rgi,此时:
candidate _ value = walk _ prob &times; &Sigma;route _ value sg _ popfactor &times; route _ value 1 rg 1 _ popfactor &times; . . . &times; route _ value m rg m _ popfactor &times; end _ value eg _ popfactor ;
其中,rgm_popfactor为第m个中间图的配置参数,为浮点值。
而route_value及end_value等其他计算与上述定义的一样。
以三步游走为例,请参阅图3所示,选择所述图的两个顶点为起始节点,进行基于广度优先的游走,得到6个候选节点,游走拓扑图包括起始图、终点图及一个中间图(middle graph),即m值为1,根据上述公式即可进一步计算起始节点到候选节点的到达概率。
上述游走算法的核心在于两次取对数方式的降权操作,这两次降权在去流行、发现强关系上达到了很好的效果。
无论是多个起点还是一个起点,经过图游走都会得到多个候选节点,若这些候选节点属于同一个节点空间,比如都是用户或都是标签,那么对这些候选节点的排序就是基于所述到达概率来排序,从高到低,当然也可以结合候选节点的属性来进行综合排序;若这些候选节点属于不同的节点空间,比如有的候选节点是用户有的是标签,那就对属于相同空间的节点进行分别排序,即对同属于用户空间的节点进行排序,对同属于标签空间的节点进行排序,排序可以基于到达概率,也可以再结合节点属性进行综合排序。
请继续参阅图1所示,本发明的图计算引擎涉及下面两个虚拟模块:1)建立数据索引模块(对应于前述的第一步);2)包含实现了图游走算法的插件的图计算平台模块(对应于前述的第二步)。
其中,1)“建立数据索引模块”实现的功能:
以C++编写的共享库的形式提供;对节点和边的关系数据建立固化索引,使用C++模板支持节点属性数据和边的属性数据,一些特殊类型用模板特化解决;使用hash table提供查询服务;程序中大量采用Linux底层syscall接口;对于索引文件采用mmap预取和mlock锁在内存中,提高访问速度,降低读文件时的内存拷贝次数;提供工具函数优化块内存顺序访问;写数据时,采用C库buf IO,提高写入效率;提供一些工具函数,提高进程的优先级到实时、绑定cpu,减少context切换,加快计算速度;用于计算的主要数据结构都连续存放在数组中,包括hash table中的数据;加入节点时,提供批量加入,提高索引建立速度;边只支持批量加入;建立索引时,采用描述符机制,不同属性可以多线程并行建立索引;计算时的内存访问也采用描述符机制,多线程,多进程可以并行计算相同的任务,也可计算不同的任务;内存访问采用先映射、再访问,提高整体效率。
2)“图计算平台模块”实现的功能:
图计算平台模块包括主体平台与功能插件。
其中,所述主体平台包含索引数据管理模块、共享库管理模块、拓扑图管理模块、线程管理模块、平台配置管理模块、TCP/IP服务管理模块这六大管理功能模块,支持平台运行中实时地修改索引数据、共享库、拓扑图和平台配置。
索引数据管理模块,实现了从硬盘载入指定索引数据到内存、释放索引数据所占内存、替换现有的索引数据的功能。
共享库管理模块,实现了动态载入共享库文件、获取共享库中回调函数的函数指针、释放关闭共享库、替换共享库、增加共享库之间的依赖关系、删除共享库之间的依赖关系、修改共享库之间的依赖关系的功能。
拓扑图管理模块,实现了增加游走拓扑图、删除游走拓扑图、修改游走拓扑图的数据、锁住与解锁拓扑图、拓扑图按照广度优先游走和深度优先游走的功能。广度优先和深度优先为两种基本的图游走方式,基于这两种方式衍生出很多图游走算法,如KNN、关联分析、最短路径查找等,这些算法中涉及的距离计算都可以使用本申请中所述的到达概率来表示,即到达概率可以表示KNN等算法中的距离。主体平台支持广度优先游走和深度优先游走两种图游走模式,以支持基于这两种游走方式的图游走算法,从而增强了图计算引擎的通用性。
线程管理模块,实现了创建线程、初始化线程所需数据、回调共享库中的回调函数的功能。
平台配置管理,实现了解析平台各部分对应的配置文件的功能。
TCP/IP服务管理,实现了并发接受TCP/IP的请求、返回结果的功能。
拓扑图与平台数据均设置了操作锁。当接收到修改平台数据的请求时,当前线程会锁住所有并发的平台数据,当平台数据处于被锁住的状态时不能对外提供服务。当拓扑图由于其包含的索引或共享库数据发生删除、修改操作时,或拓扑图自身处于删除或修改操作时,拓扑图会被设置为锁住的状态,拓扑图处于被锁住的状态时不能对外提供计算服务。
基于图游走算法的功能插件是对图游走算法的实现,即基于平台与插件的回调函数协议来实现该功能插件的回调函数。
基于图游走算法的计算公式来实现该算法,操作起来并不麻烦,但是当索引数据的边在百亿数量级的时候,图计算的计算路径最多会达到千万级,计算效率很难保证。为提高计算效率,对公式进行拆解,分离路径无关和路径相关的计算,路径无关的计算在计算初始化的时候一次性计算完,反复计算的对数值也采取同样的方法,以减少重复计算。
对于图计算中间结果的存储,采用空间换时间的策略,事先申请一个或多个整型数组(数组的长度为结果节点空间中包含的节点的个数),使用原子操作将中间结果存储于这些大数组中。因为计算的中间结果均为浮点值,所以要将浮点值整型化,即先放大再缩小,为最大限度的减少精度损失,将放大后的整型值拆成从高位到低位的多个值的组合,从而实现中间结果存储的原子操作,同时也减少了原子操作的存取冲突。
将本发明实际应用时,可用于在线社交网络媒体等的用户关系分析、用户群体发现和用户特征发现上。如将社交网络的各类人群数据以及关系数据经过本引擎的处理计算,得到最终的数据对社交广告的投放人群进行指导、品牌代言人选取的决策支持、商品销售转化率提高等方面能起到非常好的效果。例如:将某互联网销售为主的产品品牌,通过本发明的图计算引擎进行人群分析,能迅速获取到该品牌受众用户的关键特征和人群划分,通过定向的广告投递进行产品销售,实现广告精准投放,广告投入产出比高。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,本领域技术人员利用上述揭示的技术内容做出些许简单修改、等同变化或修饰,均落在本发明的保护范围内。

Claims (10)

1.一种图计算方法,其特征在于,主要包括以下步骤:
A.对图的原始关系数据进行索引,获得索引数据,所述图的顶点和边上对应所述的索引数据;
B.选择所述图的一个或多个顶点为起始节点,进行广度优先或深度优先的多步游走,获得包括用于候选的多个结束节点的游走拓扑图,基于广度优先或深度优先的图游走算法、根据游走路径中参与的顶点和边对应的索引数据计算所述起始节点到达所述结束节点的到达概率;
C.对计算出的所述到达概率进行排序。
2.根据权利要求1所述的图计算方法,其特征在于,所述步骤B中对到达概率的计算包括两次取对数方式的降权操作。
3.根据权利要求1所述的图计算方法,其特征在于,所述到达概率reach_prob的计算公式为:
reach _ prob ( startnode , candidate _ node ) = candidate _ value &times; ( 1 rev _ eg _ candidate _ node _ size ) eg _ popfactor ,
其中,eg_popfactor为游走终点图的配置参数,为浮点值;
rev_eg_candidate_node_size为当前的候选节点在终点图的反向图中的出边的个数;
candidate_value的计算公式为:
Ⅰ.当为两步游走时,则所述拓扑图包括起始图和终点图,此时candidate_value=∑route_valuesg_popfactor×end_valueeg_popfactor×walk_prob;
Ⅱ.当为三步以上游走时,则所述拓扑图包括起始图、中间图和终点图,设有m个中间图,m为自然数,此时
candidate _ value = walk _ prob &times; &Sigma;route _ value sg _ popfactor &times; route _ value 1 rg 1 _ popfactor &times; . . . &times; route _ value m rg m _ popfactor &times; end _ value eg _ popfactor ;
其中,walk_prob为本次拓扑图游走的配置参数,为浮点值;sg_popfactor为起始图的配置参数,为浮点值;rgm_popfactor为第m个中间图的配置参数,为浮点值;
route_value的计算公式为:
route _ value = sg _ rp _ weight &times; 1 start _ node _ size &times; 1 sg _ scalevalue &times; log 10 sg _ max _ log _ value x ,
其中x的值如下:
if(route_node_size>sg_max_log_value||route_node_size<sg_min_log_value){
x=sg_max_log_value-1;
}else{
x=route_node_size;
};
其中,sg_rp_weight为起始图中对应的边的权重,start_node_size为起始节点在起始图中的对应的边的出边的个数;sg_scalevalue为起始图的浮点型的配置参数,sg_max_log_value和sg_min_log_value为起始图的浮点型的配置参数,route_node_size为route node在起始图的反向图中的出边的个数;
end_value的计算公式如下:
end _ value = eg _ rp _ weight &times; 1 eg _ scalevalue &times; log 10 eg _ max _ log _ value x ,
其中x的值如下:
if(eg_route_node_size>eg_max_log_value||eg_route_node_size<eg_min_log_value){
x=eg_max_log_value-1;
}else{
x=eg_route_node_size;
};
其中,eg_rp_weight为终点图中对应的边的权重,eg_scalevalue为终点图的浮点型的配置参数,eg_max_log_value和eg_min_log_value为终点图的浮点型的配置参数,eg_route_node_size为route node在终点图中对应的边的出边个数。
4.根据权利要求3所述的图计算方法,其特征在于,所述计算的中间结果使用原子操作存储于预先设定的一个或多个数组中,所述数组的长度为结束节点空间中包含的节点个数。
5.根据权利要求1-4任一项所述的图计算方法,其特征在于,计算所述到达概率时,首先分离路径无关和路径相关的计算,路径无关的计算在计算初始化的时候一次性计算完。
6.一种应用权利要求1-5任一项所述的图计算方法的图计算引擎,其特征在于,包括建立数据索引模块以及图计算平台模块,所述建立数据索引模块用于对原始关系数据进行索引,获得索引数据;所述图计算平台模块包括主体平台及功能插件,所述功能插件包含执行计算所述到达概率的函数,所述主体平台可通过与所述功能插件的接口协议调用所述函数。
7.根据权利要求6所述的图计算引擎,其特征在于,所述功能插件采用可动态加载的共享库形式,所述主体平台支持所述功能插件的热插拔。
8.根据权利要求7所述的图计算引擎,其特征在于,所述主体平台包括:
索引数据管理模块,用于从硬盘载入指定索引数据到内存、释放索引数据所占内存、替换现有的索引数据;
共享库管理模块,用于动态载入共享库文件,获取共享库中回调函数的函数指针,释放、关闭或替换共享库,增加、删除或修改共享库之间的依赖关系;
拓扑图管理模块,用于增加或删除游走拓扑图、修改游走拓扑图的数据、锁住与解锁拓扑图、选择拓扑图按照广度优先游走或深度优先游走;
线程管理模块,用于创建线程、初始化线程所需数据、回调共享库中回调函数;
TCP/IP服务管理模块,用于并发接受TCP/IP的请求、返回结果;
以及平台配置管理模块,用于解析所述主体平台各模块对应的配置文件。
9.根据权利要求8所述的图计算引擎,其特征在于,所述主体平台数据与拓扑图均设置有操作锁,当所述主体平台数据进行修改时,或所述拓扑图及其相关数据进行删除/修改时,所述操作锁执行锁定功能。
10.根据权利要求6-9任一项所述的图计算引擎,其特征在于,所述建立数据索引模块采用C++编写的共享库,采用hash table提供查询服务,采用POSIX syscall实现与Linux系统的交互。
CN201410324671.3A 2014-07-09 2014-07-09 一种图计算方法及系统 Active CN104063507B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410324671.3A CN104063507B (zh) 2014-07-09 2014-07-09 一种图计算方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410324671.3A CN104063507B (zh) 2014-07-09 2014-07-09 一种图计算方法及系统

Publications (2)

Publication Number Publication Date
CN104063507A true CN104063507A (zh) 2014-09-24
CN104063507B CN104063507B (zh) 2017-10-17

Family

ID=51551221

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410324671.3A Active CN104063507B (zh) 2014-07-09 2014-07-09 一种图计算方法及系统

Country Status (1)

Country Link
CN (1) CN104063507B (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104952032A (zh) * 2015-06-19 2015-09-30 清华大学 图的处理方法、装置以及栅格化表示及存储方法
CN105808779A (zh) * 2016-03-30 2016-07-27 北京大学 基于剪枝的图漫游并行计算方法和应用
CN106446104A (zh) * 2016-09-13 2017-02-22 深圳市华傲数据技术有限公司 基于图计算引擎的消息同步方法及系统
CN107145963A (zh) * 2017-04-06 2017-09-08 浙江大学 一种基于深度优先的配电网路径搜索方法
WO2018006625A1 (zh) * 2016-07-06 2018-01-11 华为技术有限公司 一种图数据计算的方法、主机以及图计算系统
CN108009933A (zh) * 2016-10-27 2018-05-08 中国科学技术大学先进技术研究院 图中心性计算方法及装置
CN110019975A (zh) * 2017-10-10 2019-07-16 阿里巴巴集团控股有限公司 随机游走、基于集群的随机游走方法、装置以及设备
CN110287378A (zh) * 2019-05-24 2019-09-27 中国科学院计算技术研究所 一种基于动态代码生成的图计算方法及系统
CN110688055A (zh) * 2018-07-04 2020-01-14 清华大学 一种大图计算中数据访问方法及系统
US10776334B2 (en) 2017-10-10 2020-09-15 Alibaba Group Holding Limited Random walking and cluster-based random walking method, apparatus and device
CN111680036A (zh) * 2020-05-12 2020-09-18 国网宁夏电力有限公司信息通信公司 一种基于图存储的配置管理库的实现方法和装置
CN113284038A (zh) * 2021-03-05 2021-08-20 上海壁仞智能科技有限公司 用于执行计算的方法、计算设备、计算系统和存储介质
CN113505825A (zh) * 2021-07-06 2021-10-15 中国科学院计算技术研究所 一种图计算装置
CN113824643A (zh) * 2021-11-25 2021-12-21 中国科学院信息工程研究所 泛在网络拓扑图构建方法及网络安全防护方法
CN115208954A (zh) * 2022-06-07 2022-10-18 北京一流科技有限公司 用于分布式数据处理的并行策略预置系统及其方法
CN115374299A (zh) * 2022-10-24 2022-11-22 杭州悦数科技有限公司 分布式图数据库中可达性索引的分层构建方法和系统
CN116560877A (zh) * 2023-07-05 2023-08-08 北京枫清科技有限公司 一种实时图计算方法、装置、电子设备、存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5056021A (en) * 1989-06-08 1991-10-08 Carolyn Ausborn Method and apparatus for abstracting concepts from natural language
US5835905A (en) * 1997-04-09 1998-11-10 Xerox Corporation System for predicting documents relevant to focus documents by spreading activation through network representations of a linked collection of documents
US7899067B2 (en) * 2002-05-31 2011-03-01 Cisco Technology, Inc. Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match
CN100371934C (zh) * 2005-05-30 2008-02-27 北大方正集团有限公司 一种用于基于内容的海量图片快速检索的索引构建方法
CN102662974B (zh) * 2012-03-12 2014-02-26 浙江大学 一种基于邻接节点树的网络图索引方法

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104952032B (zh) * 2015-06-19 2018-03-23 清华大学 图的处理方法、装置以及栅格化表示及存储方法
CN104952032A (zh) * 2015-06-19 2015-09-30 清华大学 图的处理方法、装置以及栅格化表示及存储方法
CN105808779A (zh) * 2016-03-30 2016-07-27 北京大学 基于剪枝的图漫游并行计算方法和应用
CN107590769B (zh) * 2016-07-06 2021-02-09 华为技术有限公司 一种图数据计算的方法、主机以及图计算系统
WO2018006625A1 (zh) * 2016-07-06 2018-01-11 华为技术有限公司 一种图数据计算的方法、主机以及图计算系统
CN107590769A (zh) * 2016-07-06 2018-01-16 华为技术有限公司 一种图数据计算的方法、主机以及图计算系统
CN106446104A (zh) * 2016-09-13 2017-02-22 深圳市华傲数据技术有限公司 基于图计算引擎的消息同步方法及系统
CN108009933A (zh) * 2016-10-27 2018-05-08 中国科学技术大学先进技术研究院 图中心性计算方法及装置
CN108009933B (zh) * 2016-10-27 2021-06-11 中国科学技术大学先进技术研究院 图中心性计算方法及装置
US10936765B2 (en) 2016-10-27 2021-03-02 Tencent Technology (Shenzhen) Company Limited Graph centrality calculation method and apparatus, and storage medium
CN107145963A (zh) * 2017-04-06 2017-09-08 浙江大学 一种基于深度优先的配电网路径搜索方法
CN110019975A (zh) * 2017-10-10 2019-07-16 阿里巴巴集团控股有限公司 随机游走、基于集群的随机游走方法、装置以及设备
CN110019975B (zh) * 2017-10-10 2020-10-16 创新先进技术有限公司 随机游走、基于集群的随机游走方法、装置以及设备
US10901971B2 (en) 2017-10-10 2021-01-26 Advanced New Technologies Co., Ltd. Random walking and cluster-based random walking method, apparatus and device
US10776334B2 (en) 2017-10-10 2020-09-15 Alibaba Group Holding Limited Random walking and cluster-based random walking method, apparatus and device
CN110688055B (zh) * 2018-07-04 2020-09-04 清华大学 一种大图计算中数据访问方法及系统
CN110688055A (zh) * 2018-07-04 2020-01-14 清华大学 一种大图计算中数据访问方法及系统
CN110287378A (zh) * 2019-05-24 2019-09-27 中国科学院计算技术研究所 一种基于动态代码生成的图计算方法及系统
CN110287378B (zh) * 2019-05-24 2021-10-19 中国科学院计算技术研究所 一种基于动态代码生成的图计算方法及系统
CN111680036B (zh) * 2020-05-12 2022-09-27 国网宁夏电力有限公司信息通信公司 一种基于图存储的配置管理数据库
CN111680036A (zh) * 2020-05-12 2020-09-18 国网宁夏电力有限公司信息通信公司 一种基于图存储的配置管理库的实现方法和装置
CN113284038A (zh) * 2021-03-05 2021-08-20 上海壁仞智能科技有限公司 用于执行计算的方法、计算设备、计算系统和存储介质
CN113505825A (zh) * 2021-07-06 2021-10-15 中国科学院计算技术研究所 一种图计算装置
CN113505825B (zh) * 2021-07-06 2023-07-21 中国科学院计算技术研究所 一种图计算装置
CN113824643A (zh) * 2021-11-25 2021-12-21 中国科学院信息工程研究所 泛在网络拓扑图构建方法及网络安全防护方法
CN113824643B (zh) * 2021-11-25 2022-02-22 中国科学院信息工程研究所 泛在网络拓扑图构建方法及网络安全防护方法
CN115208954A (zh) * 2022-06-07 2022-10-18 北京一流科技有限公司 用于分布式数据处理的并行策略预置系统及其方法
CN115208954B (zh) * 2022-06-07 2024-04-26 北京一流科技有限公司 用于分布式数据处理系统的并行策略预置系统及其方法
CN115374299A (zh) * 2022-10-24 2022-11-22 杭州悦数科技有限公司 分布式图数据库中可达性索引的分层构建方法和系统
CN115374299B (zh) * 2022-10-24 2023-02-03 杭州悦数科技有限公司 分布式图数据库中可达性索引的分层构建方法和系统
CN116560877A (zh) * 2023-07-05 2023-08-08 北京枫清科技有限公司 一种实时图计算方法、装置、电子设备、存储介质
CN116560877B (zh) * 2023-07-05 2023-09-22 北京枫清科技有限公司 一种实时图计算方法、装置、电子设备、存储介质

Also Published As

Publication number Publication date
CN104063507B (zh) 2017-10-17

Similar Documents

Publication Publication Date Title
CN104063507A (zh) 一种图计算方法及引擎
Xin et al. Graphx: Unifying data-parallel and graph-parallel analytics
Qiu et al. Yafim: a parallel frequent itemset mining algorithm with spark
CN109033234B (zh) 一种基于状态更新传播的流式图计算方法及系统
EP2834755B1 (en) Platform for continuous graph update and computation
Ediger et al. Massive streaming data analytics: A case study with clustering coefficients
CN109684330A (zh) 用户画像库构建方法、装置、计算机设备及存储介质
CN110023925A (zh) 生成、访问和显示沿袭元数据
Sommer Approximate shortest path and distance queries in networks
CN112667860A (zh) 一种子图匹配方法、装置、设备及存储介质
CN105978711B (zh) 一种基于最小生成树的最佳交换边查找方法
Corbellini et al. DPM: A novel distributed large-scale social graph processing framework for link prediction algorithms
Xie et al. Dynamic interaction graphs with probabilistic edge decay
Senger et al. BSP cost and scalability analysis for MapReduce operations
Stutz et al. Signal/Collect12
CN111107493B (zh) 一种移动用户位置预测方法与系统
Simmhan et al. Scalable analytics over distributed time-series graphs using goffish
Corbellini et al. An analysis of distributed programming models and frameworks for large-scale graph processing
CN110309367B (zh) 信息分类的方法、信息处理的方法和装置
Song et al. Nslpa: A node similarity based label propagation algorithm for real-time community detection
CA3065157C (en) Parallel map and reduce on hash chains
Canim et al. System G data store: Big, rich graph data analytics in the cloud
Hu Local graph clustering using l1-regularized pagerank algorithms
Jamadagni et al. GoDB: From batch processing to distributed querying over property graphs
Hamann Scalable Community Detection

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant