[论文笔记]Graph OLAP: 面向图的联机分析处理

Graph OLAP: Towards Online Analytical Processing on Graphs

研究背景

  联机分析处理(OLAP)是数据分析的一种重要方式。传统的OLAP是对相互独立的数据进行处理,即不考虑数据元组之间的关系。比如超市顾客的购物信息,数据仓库保存的是每个顾客购物时购买的商品集合。使用OLAP可以分析商品之间的关系,挖掘出有用的信息供超市老板调整策略。
  传统的OLAP并不能很好的适用于图结构的分析,因为它没有考虑数据个体之间的连接关系。当前,图分析的重要性日益增长,我们需要从不同角度,以多种粒度对图进行分析,以获取有用的信息。

本篇文章的工作主要分为两部分:

  1. 对图OLAP的模型和操作进行定义;
  2. 研究图数据立方体的实现及其优化方式。

图OLAP的案例

案例1:合作模式

  该案例对论文会议进行分析,以会议开展的时间和会议名称作为变量,把一次会议作为一个网络图,把在该会议中发表论文的所有作者作为图的顶点,把共同发表同一篇问文章的作者用边连起来,表示合作关系,边上的权值表示合作的次数。

在这里插入图片描述对于这个案例,我们可以提出以下疑问:

1.在2004年的所有DB会议(SIGMOD, VLDB, ICDE等)中作者之间的合作关系是怎样的?
2.在2005年的所有DB会议中作者之间的合作关系是怎样的?
3.在所有年份的所有DB会议中作者之间的合作关系是怎样的?

显然,上述查询可以将原网络图进行叠加获得。具体方式如下图所示。

在这里插入图片描述
  可以看到,R.Agrawal和R.srikant在所有年份的所有DB会议中合作发表了33篇论文。此案例是图OLAP较为简单的一种查询。

案例2:最大流

  设想一个城市群构成的网络,网络中的顶点表示城市,城市之间的有向边表示客流承载力。这里以交通方式和相应负责的公司作为变量,将某公司的某种交通方式下的城市群客流承载力作为一张网络图。

我们考虑以下查询:

1.从城市S到城市T,仅考虑飞机的方式,能够达到的客流承载力是多少?
2.从城市S到城市T,仅考虑公司x的运载力,能够达到的客流承载力是多少?

  这类查询没法简单地通过基础网络叠加的方式得到,因为需要计算的网络是最大流网络,而基础网络是运载能力网络。从城市S到城市T的方式不仅可以直达,还可以通过其它城市中转。所以此案例的计算复杂度要大于案例1的计算复杂度。

案例3:合作模式2

  让我们再次回到案例1的场景,但这次的查询与案例1的查询有所不同。事实上,因为参与人数较多,会议上的合作关系网络看起来非常复杂。这时我们想简化一下网络,把作者之间的合作关系简化为高校之间的合作关系。也就是,若作者A属于斯坦福,作者B属于牛津,A与B合作发表了一篇文章,相当于斯坦福与牛津合作发表了一篇文章。

在这里插入图片描述
  显然,这类查询是对单张基础网络进行修改,而不涉及到案例1和案例2多张网络的操作。

根据上述三个案例,作者对图OLAP的形式和操作进行了定义。

图OLAP框架

图模型

  作者用一组快照图(snapshot)来表示一个图模型。即g = {G1, G2 … GN}。这里的g相当于数据立方体(Cube)中的方体(Cuboid),g中的元素Gi相当于方体中的元组(Cell)。
  如案例1所展示的基础图,原始数据按照会议名称和会议时间分成了许多张快照图,这些快照图构成了图数据立方体的基础方体(Base Cuboid)。

  图数据的维度可以分为两类:信息维度(Informational Dimensions)和拓扑维度(Topological Dimensions)。对这两种维度进行操作的OLAP分别称作I-OLAP和T-OLAP。

信息维度

  信息维度是将原始数据拆分为多个快照图的依据。如案例1所示,信息维度包括会议名称和会议时间。在一个快照图中,所有顶点的信息维度值相同。

拓扑维度

  拓扑维度是将快照图中的数据拆分为多个顶点的依据。如案例3所示,拓扑维度包括作者名称和所属院校。

I-OLAP

  本文主要研究了I-OLAP操作,主要分为上卷(Roll-up)、下钻(Drill-down)、切片(Slice)、切块(Dice)四类操作。I-OLAP操作比较简单,因为它主要对快照图进行叠加或拆分操作,不怎么涉及快照图内部的结构修改。

  1. 上卷:将多个低层次的快照图叠加为一个高层次聚合快照图,称为I-聚合图(I-aggregated graph)。
  2. 下钻:将高层次的I-聚合图拆分为一组低层次的快照图。
  3. 切片/切块:基于给定的信息维度,选择符合条件的快照图子集。

T-OLAP

  T-OLAP操作相对比较复杂,因为它涉及到快照图内部结构的变化,作者将T-OLAP作为以后的研究方向。

度量分类

  度量(Measure)即指标,是从维度的基础上去衡算这个元组的值。与传统的OLAP一样,图OLAP的度量可以分为I-分布度量(I-distributive), I-代数度量(I-algebraic), I-整体度量(I-holistic), T-分布度量(T-distributive), T-代数度量(T-algebraic), T-整体度量(T-holistic)。这里作者只分析了前三者。

I-分布度量

  计算I-聚合网络时,其度量值通过叠加低层次的快照图便可求得,如案例1中的合作次数。

I-代数度量

  计算I-聚合网络时,其度量值不能简单地通过叠加低层次快照图获得,但可以通过对有限个I-distributive进行操作求得。如案例2中的最大流。

I-整体度量

  计算I-聚合网络时,其度量值必须从基础快照图开始计算,计算复杂度最大。

优化方式

  由于图模型的复杂性,图OLAP的计算复杂度高于传统OLAP的计算复杂度。其中I-代数度量和I-整体度量的复杂度较大。基于此作者提出了两种优化方案:本地化,稀释化。

本地化

  我们想分析聚合网络中,某两个顶点的信息,或是它们之间的关系信息。从低层次网络中求这些信息时,只访问了它们的邻居顶点,那么称该计算是能够本地化的。
  该优化方式的应用在于,如果我们仅需要获取高层次聚合网络中部分顶点的信息,那么计算相应的低层次网络时,可以只计算对应的部分网络,而不需要将整个网络计算出来。

稀释化

  稀释化的思想是:在计算OLAP操作的过程中,对中间结果(低层次网络)的利用率越高,越能够降低计算整个聚合网络的代价。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用C++实现有向的邻接矩阵,以及可达矩阵的计算算法。 请完成Project05.cpp中DirectedGraph类的成员函数,具体要求如下: DirectedGraph类: 用来表示一个有向。 成员变量: m_AdjMat:邻接矩阵 m_ReachabilityMat:可达矩阵 成员函数: DirectedGraph():默认构造函数,构造一个空。 ~DirectedGraph():析构函数 DirectedGraph(string filepath):解析文件filepath,构造一个DirectedGraph对象。 filepath文件格式与项目四相同,但本项目的为有向。 DirectedGraph(const Graph & graph):复制构造函数 operator=(const Graph & graph):赋值运算符 ClearGraph():清空的邻接矩阵和可达矩阵。 OutputGraph():输出的邻接矩阵 operator*(const DirectedGraph & graph): 乘法运算符,用于实现可达矩阵运算中的矩阵逻辑乘 DirectedGraph Pow(int power):邻接矩阵的整数次幂。 用法如下: DirectedGraph a; a = a.Pow(5); 即a的5次幂,相当于a = a * a * a * a * a; 注意要考虑0次幂的情况。 该函数适合以递归实现。 DirectedGraph MatOr(DirectedGraph graph):矩阵逐元素的逻辑或运算。 例如: 1 0 0 1 与 0 1 1 0 运算后的结果为 1 1 1 1 void CalcReachabilityMat():计算可达矩阵,要求该函数基于*运算符和Pow函数实现 void OutputReachabilityMat():输出可达矩阵 IsConnected(int src, int dst):基于可达矩阵判断从节点src与dst之间是否存在通路,如存在返回真,否则返回假
最新发布
05-30

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值