一种基于kd树和多值决策图的时序图数据处理方法与流程

文档序号:11250984阅读:1794来源:国知局

本发明涉及时序图数据处理技术领域,具体涉及一种基于kd树和多值决策图的时序图数据处理方法。



背景技术:

随着计算机技术的发展和互联网应用的普及,各个领域可获取的数据呈爆炸式增长的趋势。在大数据分析的过程中,图作为一种有效描述大数据的数据结构,在社交网络分析、推荐网络分析、互联网分析等领域得到了充分的应用。对包含亿万个节点和边的图数据进行高效、紧凑的表示和压缩,是大规模图数据分析处理的基础。

时序图是图中顶点之间的连接性随时间变化而改变的图(即边可以出现和消失)。时序图在数据建模中具有非常大的作用,例如:当用户在在线社交网络中添加或移除朋友时友谊关系的演变;新发表的科技文章在网络上被引用的动态性;移动设备改变其基础站点时移动设备之间的连接性或在web图中链接的出现与消失等。

现有的时序图表示方法(如ikd-tree、kd-tree、ckd-tree、bckd-tree等)在对大规模时序图数据表示时具有一定的局限性,比如当时序图规模变大时,图内部存在大量的同构子图;仅对稀疏图有效;随着维数的增加存储空间呈指数增长等。此外,目前基于kd树的时序图表示方法在对大规模时序图、稀疏图、多维图数据等进行表示的时候缺乏必要的考虑,在紧凑性上仍有较大的改进空间。针对kd树表现出来的问题,通过对其进行改进得到一种更加紧凑并且适用更广的时序图数据的表示方法是非常有价值的。



技术实现要素:

本发明所要解决的是现有kd树及其优化方法在存储大规模时序图数据时结构不够紧凑的问题,提供一种基于kd树和多值决策图的时序图数据处理方法,以实现对大规模时序图数据进行更紧凑、高效的表示和操作。

为解决上述问题,本发明是通过以下技术方案实现的:

一种基于kd树和多值决策图的时序图数据处理方法,包括如下步骤:

步骤1、根据kd树的规则对时序图的顶点和时间点进行n位编码;顶点和时间点的n位编码的每一位都是k种状态之一,即0,1,…,k-1之一;

步骤2、根据步骤1所得时序图的顶点和时间点的编码,对时序图的边进行n位编码;边的n位编码的每一位都是k3种状态之一,即1,2,…,k3状态之一;

步骤3、使用多终点和边值决策图库,根据步骤2所确定的时序图的边的编码,构造表示时序图的mdd结构,所得为表示时序图的kd-mdd结构;

步骤4,对步骤3所得的表示时序图的kd-mdd结构进行图的基本操作;

上述v为时序图的顶点的集合,t为时序图的时间点的集合;k为设定的大于等于2的整数。

上述步骤1具体为:

步骤1.1、依据kd树对时序图的邻接矩阵划分的规则,确定时序图的顶点和时间点的编码长度n,其中

步骤1.2、使用k分方式分别对时序图中的顶点v和时间点t进行编码,其中1≤v≤max(v),1≤t≤max(t);先令k分的下界lt=1,上界ht=kn

步骤1.3、如果lt<ht,则令l=lt,h=ht,并将区间[l,h]进行k等分;若v或t处在区间[l,h]等分为k个子区间中的第i个子区间,则顶点v或时间点t得到一位编码记为i,同时将此第i个子区间记为[lt,ht];其中i=0,1,…,k-1;

步骤1.4、重复步骤1.3,直至lt≥ht,即分别得到顶点v和时间点t的n位编码;

上述,v为时序图的顶点的集合,t为时序图的时间点的集合,k为设定的大于等于2的整数。

上述步骤2中,在时间点h,将顶点x到顶点y的边用特征函数e(x,y,h)表示,由此获得时序图的边的编码:

e(x,y,h):{0,1,…k-1}n×{0,1,…k-1}n×{0,1,…k-1}n→{1,2,…k3}n

其中,x和y为时序图2个顶点的编码向量,h为时序图时间点的编码向量,k为设定的大于等于2的整数。

上述步骤3具体为:

步骤3.1、使用多终点和边值决策图库创建取值范围均为{1,2,…,k3}的n个变量;

步骤3.2、根据步骤2得到时序图的边的编码,在时序图中选出一条边,并使用多终点和边值决策图库中的createedge()函数生成一个mdd,即mdd-r;再在时序图剩余边中选出一条边,并使用多终点和边值决策图库中的createedge()函数生成mdd,即mdd-t;

步骤3.3、使用多终点和边值决策图库中的union运算符,对步骤所得到的mdd-r和mdd-t进行union运算,合并结果覆盖原来的mdd-r;

步骤3.4、继续在时序图剩余边中再取出一条边,并使用多终点和边值决策图库中的createedge()函数生成一个mdd,并将其覆盖原来的mdd-t;

步骤3.5、返回步骤3.3,直到将时序图中的所有边选出,最终所得到的mdd-r即为表示时序图的kd-mdd结构。

上述步骤3.2中,对于无权图,初始化一个布尔型mdd,其终点是真或者是假;对于加权图,初始化一个整数型mdd或实数型mdd,其终点是整数或实数。

与现有技术相比,本发明具有如下特点:

1、采用kd树的规则对邻接矩阵进行划分,然后使用多值决策图存储图数据,使kd树划分邻接矩阵时产生的大量相同的子矩阵,即kd树中的同构子树,自然地被合并,最终生成的kd-mdd结构比kd树存储结构紧凑;

2、由于kd-mdd中不论是0值还是1值的子矩阵,只要是同构的,都将被合并,在表示稠密图时,kd-mdd节点数会变少,结构更为紧凑;

3、kd-mdd存储图数据后,图的相关基本操作可转化为符号决策图的逻辑操作,为动态图数据的高效操作创造了条件,使得基于kd-mdd图的查询操作要比基于kd树更为简洁;

4、kd-mdd是基于多值决策图的结构,其本身结构比kd树更有利于子图查询、图同构、图/子图匹配以及多图匹配等。

附图说明

图1为一种基于kd树和多值决策图的时序图数据处理方法的流程图。

具体实施方式

以下结合实施例对本发明做进一步详细的描述。

多值决策图mdd(multi-valueddecisiondiagram)是一个具有多个终端节点的有向无环图,描述了一个带有n个变量的离散多值函数,f:d1×d2×…×di×…×dn→s,其中:

1)di={1,2,…,ni}为多值变量xi的有限值域,不同变量其值域可能不同;s为多值函数f的有限值域,即mdd终端节点的取值集合,其可能为布尔值(真和假,或者0和1)、有限整数集合或者有限实数集合。

2)mdd的节点包括终端节点和非终端节点。

3)非终端节点用xi表示,包含ni个指向其他节点的指针,这些指针和函数f对应,形式化描述如下式:

fxi=c=f(x1,x2,…,xi-1,c,xi+1,…,xn)

多值变量x1到xn给定的一组取值,得到唯一的终端节点取值。

mdd的化简规则为以下三条:

规则1、合并相同终端节点:同一属性的终端节点只保留一个,并删除其余相同属性的终端节点,原来指向这些已删除的终端节点的指针重定向到保留的终端节点上。

规则2、合并相同内部节点:同一属性的内部节点,即非终端节点,只保留一个,并删除其余相同属性的内部节点,原来指向这些已删除的节点的指针重定向到保留的内部节点上。

规则3、删除冗余节点:如果一个节点的所有指针都指向同一节点,那么该节点就是冗余节点,将其删除,并将指向该节点的指针指向删除节点的孩子节点。

一种基于kd树和多值决策图的时序图数据处理方法,如图1所述,所述时序图为有向图g=(v,e,t),其中v表示顶点的集合,e表示边的集合,t表示时间点的集合,包括如下步骤:

步骤1、根据kd树的规则对有向图g=(v,e,t)的顶点和时间点进行n位编码,其中,k为大于等于2的整数,max(v,t)为计算集合v和t中最大值的函数。在本实施例中k=2,对于编号为v的顶点或值为t的时间点,1≤v≤max(v)、1≤t≤max(t),分别将顶点编号v和时间点t以递归2分方式进行编码,在顶点的n位编码中每一位都是2种状态之一,0或1。

步骤1.1、依据kd树对时序图的邻接矩阵划分的规则,即kd划分规则,确定图数据顶点和时间点的编码长度n为顶点编号和时间点中的最大值以2为底的对数向上取整,即

步骤1.2、本例k=2,使用二分方式对顶点和时间点进行编码。二分的下界lt=1,上界ht=2n;对于编号为v的顶点,1≤v≤max(v),对编号为v的顶点按递归二分方式进行编码。根据原图中编号为v的顶点在所有顶点中的所在位置,得到一个状态作为其一位编码,本例中编号为v的顶点的n位编码中每一位都是2种状态之一,即0或1。对于值为t的时间点,1≤t≤max(t),对值为t的时间点按照二分方式进行编码。根据原图中值为t的时间点在所有时间点中的所在位置,得到一个状态作为其以为编码,本例值为t的时间点的n位编码中每一位都是2种状态之一,即0或1。

步骤1.3、若lt<ht,二分方式的中值等于上界与下界和的一半。若v或t小于或等于中值,得到编号为v的顶点或值为t的时间点的一位编码为“0”,同时将中值减1作为上界ht;否则,得到编号为v的顶点或值为t的时间点的一位编码为“1”,同时中值加1作为下界lt。

步骤1.4、重复进行步骤1.3,直至lt≥ht,此时便得到该编号为v的顶点或值为t的时间点的n位编码。

步骤2、依据步骤1所得顶点和时间点的编码,对原图的边进行编码。即根据步骤1得到的将要进行编码的时间点t某条边的起、止两个顶点的编码及时间t编码,将时刻t以及该边的两个顶点的对应位编码状态进行组合,即得到该边的一位编码;n位编码状态依次对应组合,即得到该边的n位编码。

步骤2.1、本发明中时序图的有向边为顶点之间的关系,用顶点之间的特征函数描述。如在时间点t时刻顶点v1到顶点v2之间的边,用特征函数e(v1,v2,t)来描述。设x=(x1,…,xn),y=(y1,…,yn),t=(t1,…,tn)是图中顶点的编码向量,则在时间点t时刻顶点x到顶点y的边的特征函数表示为:

e(x,y,t):{0,1,…k-1}×{0,1,…k-1}×{0,1,…k-1}→{1,2,…k3}

即时间点t和两个顶点编码的每一位上的k种状态组合得到k3种状态。因此,边的编码长度依然是n位,编码的每一位是k3种状态之一,本例边编码的每一位即1,2,3,5,6,7,8八种状态之一。

步骤2.2、重复步骤2.1,直至得到时序图中所有边的编码。

步骤3、根据步骤2所确定的边编码,构造多值决策图mdd(multi-valueddecisiondiagram)结构,得到与时序图对应的kd-mdd结构。

kd-mdd结构是mdd结构的一种特殊情况,限定了它的变量个数和每个变量的每一位编码的取值范围,其变量个数变量的每一位编码的取值范围为{1,2,3,…,kd}。因此kd-mdd具用mdd的性质,适用mdd的化简规则。本发明构造的边编码长度为n的kd-mdd,令其n位编码的值等于边编码集合里的值,边存在时函数值为t,否则为f,所得kd-mdd与有向图g对应。

步骤3.1、使用多终点和边值决策图库,即meddly(multi-terminalandedge-valueddecisiondiagramlibrary),初始化一个含有n个变量的mdd,即顶点、时间点和边的编码长度n,其值域如步骤2.1所述为1~k3,本例为1~8。

对于时序图,使用布尔型mdd,其终点是真(t)或者是假(f);对于加权图,使用整数或者实数型mdd,其终点是整数或者实数。

步骤3.2、根据步骤2所得的一条边编码,使用meddly库中的createedge()函数生成一个初始mdd;用相同方法生成另一条边的mdd。

步骤3.3、使用meddly库中提供的union运算符,对步骤3.2两条边生成的mdd进行union运算,合并结果保存在步骤3.1所得的初始mdd中。

步骤3.4、重复步骤3.2和3.3,直至所有边都生成mdd并合并到初始mdd中,最终得到的mdd即为原图的kd-mdd。

步骤4,根据步骤3所得的kd-mdd结构进行图的基本操作。在得到的kd-mdd结构上采用符号决策图的逻辑操作进行时序图的基本操作,如顶点的直接邻居和反向邻居的查询、时间点t时刻边的激活状态、时间点t时刻时序图的快照、时间点t时刻边的活动等。

(1)时间点t时刻边e(v1,v2,t)的查询。

在所得的kd-mdd结构图上,根据边的起止顶点v1和v2的编码以及时间点t的编码,得到该条边在时间点t的特征函数e(v1,v2,t),在步骤3中所得到的原时序图的kd-mdd中检测e(v1,v2,t)的函数值。若查询值为t,则该边存在,反之该边不存在。

使用meddly库中提供intersection运算符求两个mdd的交运算。将步骤3所得的原图的kd-mdd与根据该条边的特征函数e(v1,v2,t)生成的kd-mdd进行intersection运算,运算结果为t,则该边存在,否则不存在。

(2)直接邻居查询。

在所得的kd-mdd结构图上进行的直接邻居查询操作求得顶点出度,根据步骤4.1中的查询结果,将要进行查询的时间点赋值为t与边起始点赋值为v1,图中的所有其它顶点依次赋值给v2,检测e(v1,v2,t)的函数值。若值为t,则在时间点t时刻当前v2是v1的一个外邻点,否则不是;通过统计v1外邻点的个数得到该顶点v1的出度。

(3)反向邻居查询。

在所得的kd-mdd结构图上进行的反向邻居查询操作求得顶点入度,根据步骤4.1中的查询结果,将要进行查询的时间点赋值为t与边终止点赋值为v2,图中的所有其它顶点依次赋值给v1,检测e(v1,v2,t)的函数值。若值为t,则在时间点t时刻当前v1是v2的一个反向邻点,否则不是;通过统计v2反向邻居的个数得到该顶点v2的入度。

(4)增加边。

在所得的kd-mdd结构图上,根据要在时间点t时刻增加边的起止顶点v1和v2的编码得到该条边的特征函数e(v1,v2,t),生成该条边的kd-mdd,然后与步骤3所得原图的kd-mdd进行union运算,运算结果即为增加了该边的新图的kd-mdd。

(5)删除边。

在所得的kd-mdd结构图上根据要删除在时间点t时刻边的起止顶点v1和v2的编码得到该条边的特征函数e(v1,v2,t),生成该条边的kd-mdd,然后将步骤3所得原图的kd-mdd与要删除边的kd-mdd进行difference运算,运算结果即为删除了该边的新图的kd-mdd。difference是meddly库中提供的一个运算符,用来求两个mdd的差运算,difference(a,b)={x|x属于a且x不属于b}。

本方法采用mdd存储时序图数据,使kd树中的同构子树被合并,节点数量大大减少,结构更加紧凑;逻辑操作代替时序图的基本操作,使操作变得更加快捷、简便。根据上述图的基本操作,可拓展完成图的复杂操作,比如图中顶点的添加与删除、子图的添加与删除、宽度优先搜索、求最短路、网络流等等。

上述实施例,仅为对本发明的目的、技术方案和有益效果进一步详细说明的具体个例,本发明并非限定于此。凡在本发明的公开的范围之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1