背景
现实生活中的很多数据都可以建模成图(Graph)这一抽象的结构。这种高效紧凑的数据形式可以表示出拓扑、属性、时序等丰富的信息,而图计算的目标就是从图结构中挖掘出有价值的知识或规律,例如频繁模式、因果关系等。随着信息时代的到来,数据规模呈爆炸式增长,产生了对大规模的图数据进行高效处理的需求,图计算已经成为了工业界和学术界的热点话题,并因此诞生了一系列的图计算系统及优化研究工作。
复杂的业务场景,致使图数据的计算类型也是多种多样的。目前,存在着三种最主要的图计算类型,分别是图查询、图分析和图学习,下面我们就逐一地进行介绍。
图查询
通常来说,图数据非常庞大,而图数据的交互式查询只关心其中满足条件的比较少量的点和边。如下图所示,这些点和边会形成特定的路径,或者子图模式。例如,从一个地方到另一个地方的最优路线,或者物流的路径信息,都是典型的路径查询场景。子图模式是另一种类型的图查询,它用子图表示某种模式,然后用这个子图在全图中进行匹配查询。
路径查询的本质是图的遍历,通常按照如下的步骤进行:首先将图上特定的顶点设为待查点;然后每个待查点通过自己所连接的满足条件的边找到目标端点集合,检查目标端点是否满足查询目标;如果满足则将该目标端点放入结果集,否则将该目标端点设置为新的待查点。一直重复这样的步骤,直到没有待查点。简单来说,就是在图查询的整个过程中,按照用户指定的条件,一步一步在图上游走遍历,并最终获得想要的结果。
另一种类型的图查询,即子图查询,其理论基础是子图同构。用户需要给定待查询的子图(点、边以及它们所要满足的条件