一种基于k2‑MDD的Web服务组合方法与流程

文档序号:11326883阅读:291来源:国知局

本发明涉及大规模图数据存储与web服务技术领域,具体涉及一种基于k2-mdd的web服务组合方法。



背景技术:

web服务组合是一种能够通过组合多个功能简单的web服务来完成一项复杂任务的有效方式。但面对当前大规模的web服务,如何快速的组合出满足用户功能性需求的web服务组合结果是富有挑战性的问题。近些年来,web服务组合问题逐步成为web服务研究领域的热点。基于图模型的方法是解决服务组合问题的主要方法之一,因为图模型表示大量的多种可能的服务组合需要大量的空间,所以利用压缩图表示服务组合依赖图被提出。多值决策图(multi-valueddecisiondiagram,mdd)适用于描述多值变量,并且能够实现空间或者变量组合的隐式表示与搜索,使得所表示的结构更为紧凑,顶点得到明显的减少。

关于服务组合问题已经有相当多的研究,其中,m.kuzu等提出利用规划方法解决服务组合问题。规划选择适当的服务并确定它们的顺序以达到目标。为了解决一个服务组合问题,规划算法应该首先构造一个送初始状态到目标状态的搜索图,然后通过后向搜索找到一个解决方案的路径。在大规模的服务的数量和组合下,规划算法受到搜索空间的限制,可能无法找到解决方案。为了对图数据进行紧凑表示,在传统的邻接矩阵表示法的基础上,brisaboa等于2009年提出了基于k2树(k2-tree)的方法,树中的每一层对应于邻接矩阵或分块子矩阵的分块子矩阵,顶点对应于邻接矩阵的分块子矩阵,生成的k2树使用两个位向量t和l来存储,该方法不仅能够紧凑表示邻接矩阵,而且能实现邻接顶点的正向或逆向高效查询操作。为了应对这个挑战,可以使用压缩图来表示web服务组合问题,li等人使用brisaboa提出的k2树结构来解决该问题。虽然使用k2树的结构来存储表示web服务组合,使得结构更为紧凑,顶点数得到显著的减少,但是在对大规模web服务组合问题表示时仍具有一定的局限性。施佺等给出了k2树表示方法的两种优化技术:启发式深度优先顶点重排序和自适应修正k,使得所表示的结构更为紧凑,顶点得到明显的减少。

不论是k2树还是施佺优化过的k2树,在对大规模web服务组合问题表示时仍具有一定的局限性,具体表现在:

1)当图的规模变大时,图内部本身就会存在大量的同构子图。同样的,当按照k2树的思想把邻接矩阵进行划分后,也存在大量的相同的子矩阵。这就造成了k2树内也存在大量的同构子树。

2)k2树仅对稀疏图有效,当图变的稠密时,由于邻接矩阵内可被压缩的0顶点变少,因此k2树紧凑性也会变低。

3)k2树未涉及动态图(需要添加或删除顶点、边以及子图等的图)的表示与操作。

目前的k2树的图数据紧凑表示方法对上述图的结构特性尚缺乏必要的考虑,在紧凑性上仍有较大的改善空间。针对基于k2树web服务组合目前存在的问题,有必要对其进行进一步的优化与改进,以得到一种更为紧凑的结构表示方法使得进一步减少web服务组合问题的顶点存储空间。



技术实现要素:

本发明提供一种基于k2-mdd的web服务组合方法,通过用k2-mdd结构存储对web服务组合问题的关系依赖图表示,实现对web服务组合问题的关系依赖图进行高效、紧凑地表示从而减少了顶点的存储空间,减小了搜索空间。

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

一种基于k2-mdd的web服务组合方法,包括如下步骤:

步骤1、构建web服务组合关系依赖图g=(v,e);其中v为顶点集合,顶点包括输入概念、输出概念和web服务;e为边集合,边包括输入概念与对应的web服务的匹配关系,以及web服务与对应的输出概念的匹配关系;

步骤2、根据k2树的规则,对步骤1所构建的web服务组合关系依赖图的每个顶点进行n位编码;其中每个顶点的n位编码的每一位都是k种状态之一即0,1,…,k-1之一;

步骤3、依据步骤2所得顶点编码,将步骤1所构建的web服务组合关系依赖图的每条边的2个顶点的编码的对应位进行状态组合,得到每条边的n位编码;其中每条边的n位编码的每一位都是k2种状态之一,即1,2,…k2状态之一;

步骤4、根据步骤3所得边的编码,对表示输入概念与对应的web服务的匹配关系的所有边构造多值决策图结构,生成输入概念与web服务的相互关系的k2-mddin,同时对表示web服务与对应的输出概念的匹配关系的所有边构造多值决策图结构,生成web服务与输出概念的相互关系的k2-mddout;

步骤5、对步骤4所生成的输入概念与web服务的相互关系的k2-mddin和web服务与输出概念的相互关系的k2-mddout进行查询,并输出调用的web服务组合;

上述k是大于等于2的整数,|v|为顶点总数。

上述步骤2的具体子步骤为:

步骤2.1、使用k分方式,对web服务组合关系依赖图中某一编号为n的顶点进行编码,其中1≤n≤|v|,|v|为顶点总数;

步骤2.2、先令k分的下界lt=1,上界ht=kn;其中k是大于等于2的整数;

步骤2.3、如果lt<ht,则令l=lt,h=ht,将区间[l,h]进行k等分;若n处在区间[l,h]等分为k个子区间中的第i个子区间,则i从0开始计数,则编号为n的顶点得到一位编码记为i,同时将此第i个子区间记为[lt,ht];

步骤2.4、重复步骤2.3,直至lt≥ht,此时即得到该编号为n的顶点的n位编码。

上述步骤3具体为:将2个顶点之间的边用特征函数来描述;即起始顶点x的编码向量为x=(x1,x2,…,xn),终止顶点y的编码向量为y=(y1,y2,…,yn),则顶点x到顶点y的边的特征函数表示为:

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

上述步骤4的具体子步骤为:

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

步骤4.2、根据步骤3所得到的边的编码,web服务组合关系依赖图的所有边中任意取出一条边,并对该条边使用多终点和边值决策图库生成一个多值决策图,记为多值决策图r;

步骤4.3、在web服务组合关系依赖图的其余边中任意取出一条边,并对该条边使用多终点和边值决策图库生成一个多值决策图,记为多值决策图t;

步骤4.4、使用多终点和边值决策图库,对多值决策图r和多值决策图t进行合并运算,并将运算后的结果去覆盖原来的多值决策图r;

步骤4.5、在web服务组合关系依赖图的剩余边中任意取出一条边,并对该条边使用多终点和边值决策图库生成一个多值决策图,并将该多值决策图去覆盖原来的多值决策图t;

步骤4.6、重复步骤4.4~4.5,直至web服务组合关系依赖图的所有边都生成为多值决策图,并合并至多值决策图r中,此时所的得到多值决策图r即为web服务组合关系依赖图的k2-mdd。

上述步骤5的具体子步骤为:

步骤5.1、用户给出一定的请求request<rin,rout>,其中rin为输入概念集合,rout为输出概念集合;

步骤5.2、将输入概念集合rin中的每个输入概念作为起始顶点,在步骤4生成的输入概念与web服务的相互关系的k2-mddin中,通过外邻查询操作查找到该输入概念所对应的所有终止顶点即web服务;

步骤5.3、分别将步骤5.2所查找到的每个web服务作为终止顶点,在步骤4生成的输入概念与web服务的相互关系的k2-mddin中,通过内邻查询操作查找到该web服务所对应的所有起始顶点即输入概念;

步骤5.4、判断步骤5.3所查找到的每个web服务所对应的所有输入概念是否都存在于输入概念集合rin中;如果都存在,则调用该web服务,并将其添加到可调用的web服务列表中;否则,不调用该web服务;

步骤5.5、将步骤5.4所得服务组合列表中的每个调用的web服务作为起始顶点,在步骤4生成的web服务与输出概念的相互关系的k2-mddout中,通过外邻查询操作查找到该web服务所对应的所有终止顶点即输出概念;

步骤5.6、判断输出概念集合中rout中的每个输出概念是否都出现在步骤5.5所查找到的输出概念中;如果都出现,则组合结束,并输出步骤5.4所得到的可调用的web服务列表;否则,将步骤5.5所查找到的输出概念加入到输入概念集合rin集合中,并返回至步骤5.2。

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

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

2、由于k2-mdd中不论是0值还是1值的子矩阵,只要是同构的,都将被合并,在表示稠密图时,k2-mdd顶点数会变少,结构更为紧凑,有效的减少了web服务组合问题中的顶点数量;

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

4、k2-mdd是基于多值决策图的结构,其本身结构比k2树更有利于子图查询、图同构、图/子图匹配以及多图匹配等,故在更有利于web服务组合匹配的实现。

具体实施方式

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

多值决策图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对应,形式化描述如下式所示:

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

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

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

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

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

一种基于k2-mdd的web服务组合方法,其原图为web服务组合依赖图g=(v,e),其顶点数|v|为大于等于1的整数,边数|e|为大于等于1的整数,包括如下步骤:

步骤1、构建web服务组合问题依赖图g=(v,e),v表示顶点集合,表示所有的web服务关系中的对应web服务的输入概念cin、输出概念cout和web服务w。e表示边集合,分别表示输入概念c与对应的web服务w的匹配关系、web服务w与对应的输出概念c的匹配关系。

依据以上关系,所构建两个关系依赖图g=(v,e)实际上由和表示web服务的输入概念cin与web服务w关系依赖图gin=(v,e)和表示web服务的输出概念cout关系依赖图gout=(v,e)两部分组成。

步骤2、根据k2树的规则对web服务组合关系依赖图g=(v,e)的顶点进行n位编码,其中,本例k=2。对于编号为n的顶点,1≤n≤|v|,将顶点总数|v|以递归2分方式进行编码,在顶点的n位编码中每一位都是2种状态之一,0或1。

步骤2.1、依据k2树对web服务组合关系依赖图的邻接矩阵划分的规则,即k2划分规则,确定图数据顶点的编码长度n为顶点个数以2为底的对数向上取整,即

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

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

步骤2.4、步骤2.3重复进行,直至lt≥ht,此时便得到该编号为n的顶点的n位编码。

步骤3、依据步骤2所得顶点编码,对依赖图的边进行编码。构造多值决策图结构,即mdd结构,所得为k2-mdd结构。k2-mdd结构是mdd结构的一种特殊情况,限定了它的变量个数和变量的取值范围,其变量个数每个变量的取值范围均为{1,2,…,k2}。故k2-mdd具有mdd的性质,适用mdd的化简规则。

k2-mdd结构为图的邻接矩阵用一个将原始矩阵进行递归的k2等分后构造的多值决策图结构,图的邻接矩阵中任一单元均对应于k2-mdd中n个变量的唯一一组取值,根据该组取值得到的唯一函数值即终端顶点的值,并且此值与原始矩阵中对应单元格的元素值相等。

本发明构造的含有n个变量的k2-mdd,令其n个变量的值等于边编码集合里的值,函数值为t,否则为f,所得k2-mdd与有向图g对应。

步骤3.1、依据步骤2所得顶点编码,对原图的边进行编码;本发明中web服务组合关系依赖图的有向边为顶点之间的关系(即web服务组合问题中的概念参数c和服务w),用顶点之间的特征函数描述。如顶点v0到顶点v1之间的边,用特征函数e(v0,v1)来描述。设x=(x1,…,xn),y=(y1,…,yn)是图中顶点的编码向量,则顶点x到顶点y的边的特征函数表示为:

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

即两个顶点编码的每一位上的k种状态组合得到k2种状态。因此,边的编码长度依然是n位,编码的每一位是k2种状态之一,本例边编码的每一位即1,2,3,4四种状态之一。

将要进行编码的某条边的起、止两个顶点的编码,将该边的两个顶点的某对应位编码状态进行组合,即得到该边的一位编码。n位编码状态依次对应组合,即得到该边的n位编码。

步骤3.2、重复步骤3.1,直至得到图中所有边的编码。根据步骤2所确定的边编码,构造多值决策图结构,即mdd(multi-valueddecisiondiagram)结构;所得为k2-mdd结构;在web服务组合问题中我们将输入概念参数cin和web服务w之间的相互关系的依赖图根据以上步骤构建k2-mddin,将web服务w和输出概念参数cout之间的相互关系的依赖图根据以上步骤构建k2-mddout。

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

使用布尔型mdd,其终点是真(t)表示概念参数与服务之间有相互关系,否则是假(f)表示概念参数与服务没有相互关系。

meddly库是为操控mdd提供的一个c/c++开源项目,由爱荷华州立大学在linux平台下开发,其中提供了丰富的mdd构造以及操作的函数。例如:使用createvariablesbottomup()函数创建将要构造mdd的变量个数以及每个变量的取值范围。使用createedge()函数根据给定的一组或多组变量的值生成一个mdd。使用apply()函数以及union运算符将两个mdd进行合并。

步骤3.4、从依赖图中选取一条边,根据步骤2所得的该条边编码,使用meddly库中的createedge()函数生成一个初始mdd,记为r;接着,在依赖图的其余边中再取一条边,用相同方法生成另一条边的mdd,记为t。

步骤3.5、使用meddly库中提供的union运算符,对步骤3.4得到的r和t进行union运算,合并结果覆盖原来的r,仍记作r。

步骤3.6、继续在剩余的边中再取一条边用相同方法生成mdd,记为t,r和t进行union运算,合并结果仍记作r。

步骤3.7、重复步骤3.6,直至所有边都生成mdd并合并到初始mdd中,最终得到的mdd即为原依赖图的k2-mdd。

由于步骤1所构建两个关系依赖图g=(v,e)实际上由和表示web服务的输入概念cin与web服务w关系依赖图gin=(v,e)和表示web服务的输出概念cout关系依赖图gout=(v,e)两部分组成。因此,步骤3所得到的k2-mdd也由输入概念与web服务的相互关系的k2-mddin和web服务与输出概念的相互关系的k2-mddout两部分组成。

步骤4,根据步骤3所得的k2-mdd结构进行依赖图的查询。当用户给出一定的请求request<rin,rout>,rin为输入概念集合,rout为输出概念集合。使用外邻查询查找到对应的web服务,并使用内邻查询确定对应的web服务的输入概念在rin中都已知,如果是则为可调用的web服务。由被调用的web服务可以得到对应的输出概念,以此类推,直到rout都得到,并给出被调用的服务组合。

步骤4.1、边查询。

在步骤3所得的k2-mdd结构上,根据某条边的起止顶点v1和v2的编码得到该条边的特征函数e(v1,v2),在步骤3所得原图的k2-mdd中检测e(v1,v2)的函数值。若值为t,则该边存在,否则不存在。

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

步骤4.2、外邻查询。

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

步骤4.3、内邻查询。

在步骤3所得的k2-mdd结构上的内邻查询操作包括求得顶点入度,与步骤4.2外邻查询类似,将要进行外邻查询的顶点赋值为v2,图中所有其它顶点依次赋值为v1,检测e(v1,v2)的函数值。若值为t,则当前v1是v2的一个内邻点,否则不是;通过统计v2内邻点的个数得到该顶点v2的入度。

步骤4.4、根据步骤3所得的两个k2-mdd结构分别是输入概念与web服务的相互关系的对应k2-mddin和web服务与输出概念的相互关系对应的k2-mddout。当用户给出一定的请求request<rin,rout>,rin为输入概念集合,记为rin,=<in1,in2,…,inn>,rout为输出概念集合,记为rout=<out1,out2,…,outn>。在得到的k2-mddin结构中通过外邻查询查找到rin对应的web服务,并使用内邻查询确定对应的web服务的输入概念在rin中都已知,如果是则为可调用的web服务。把可被调用的web服务添加到服务组合列表中,否则,不调用该web服务,在得到的k2-mddout结构中由被调用的web服务通过外邻查询可以得到对应的输出概念,如果rout集合中的输出概念都已知,则组合结束,否则,将得到的输出概念加入到rin集合中,以此类推,直到rout都得到,并给出被调用的服务组合。

本发明设计的一种基于k2-mdd的web服务组合方法,采用k2树的规则对web服务依赖图对应的邻接矩阵进行划分,然后使用多值决策图mdd存储图数据,生成的k2-mdd结构。不仅比k2树存储结构紧凑,图的相关基本操作转化为符号决策图的逻辑操作。1、根据k2树的规则对web服务组合问题依赖图的顶点进行n位编码,k≥2;2、依据顶点编码对边进行编码;3、根据边编码构造多值决策图结构,得与依赖图g对应k2-mddin、k2-mddout结构,其具有mdd的性质,适用mdd的化简规则;4、对所得的k2-mdd结构采用符号决策图的逻辑操作进行图的基本操作,当用户给出一定的请求request<rin,rout>,rin为输入概念集合,rout为输出概念集合。使用外邻查询查找到对应的web服务,并使用内邻查询确定对应的web服务的输入概念在rin中都已知,如果是则为可调用的web服务。由被调用的web服务可以得到对应的输出概念,以此类推,直到rout都得到,并给出被调用的服务组合。本发明提出采用k2-mdd结构存储表示web服务组合问题依赖图,用k2树的思想对邻接矩阵进行划分,然后使用多值决策图进行存储,使k2树中大量的同构子树所造成的冗余顶点得到合并,达到存储结构更为紧凑的目的,从而大大减少了顶点产生数量,从而减少了搜索空间,依赖图的基本操转化逻辑操作,提高了搜索效率。

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

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