一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种在社交网络上查找最稀疏群体方法与流程

2022-02-22 07:09:46 来源:中国专利 TAG:


1.本发明涉及空间数据库和社交网络领域,更具体地,涉及一种在社交网络上查找最稀疏群体方法。


背景技术:

2.有很多研究是关于在社交网络中寻找特定群的。这些工作可以分为两类:寻找密集群/子图和寻找稀疏群。
3.1.社交网络上寻找密集的群/子图。
4.为了度量一个密集的群体,研究者们提出了几个指标,比如seidman,s.b.在论文“network structure and minimum degree”中提出的k-core,huang,x.等人在论文“querying ktruss community in large and dynamic graphs”中提出的k-truss,mitzenmacher,m.在论文“scalable large near-clique detection in large-scale networks via sampling”中提出的cliques和motifs等。而对于最密集群,a.v.goldberg在论文“finding a maximum density subgraph”中查找的是社交网络上密度最大的群体。a.v.goldberg将图的密度定义为边数与图中顶点数的比值。tsourakakis,c.于2015年在论文“the k-clique densest subgraph problem”中介绍了基于了k-clique的最密集子图问题,且提出了求解该问题的有效精确算法。fang,y.等人于2019年在论文“efficient algorithms for densest subgraph discovery”中,在理论保证的前提下通过k-core找到最密集的群,并设计了有效精确的最密集子图查找算法。然而,tsourakakis,c.于2015年在论文“the k-clique densest subgraph problem”中发现最密集群体的精确算法只适用于小型社交网络。对于大型社交网络来说,效率太低了。为了解决这一问题,研究人员设计了许多近似算法。charikar等人于2000年在论文“greedy approximation algorithms for finding dense components in a graph”中设计了一个2-近似算法来解决这个问题,他使用图中的平均度来衡量密度。除了精确算法外,fang,y.等人于2019年在论文“efficient algorithms for densest subgraph discovery”中还利用k-core设计了一个有效的近似解。bahmani,b.等人于2012年在论文“densest subgraph in streaming and mapreduce”中提出了一种参数化近似算法。该近似算法找到一个密度保证近似比为2(1 ∈)(对于任意∈>0)的群体。此外,许多研究者开始研究最密集群体问题的各种变体。bhaskara,a.等人于2010年在论文“detecting high log-densities:an o(n
1/4
)approximation for densest k-subgraph”中研究了最密集的k-subgraph问题。给定一个图g和一个参数k,该问题在g上找到一个大小为k且边数最多的群体。qin,l.等人于2015年在论文“locally densest subgraph discovery”中的目的是发现前k个最密集的群体。另外,有向图上的最密集群也有很多研究工作。kannan,r.等人于1999年在论文“analyzing the structure of large graphs”中首先提出了有向图上的最密集群问题。当没有固定的大小来限制结果集时,一个2-近似算法被khuller,s.等人于2009年在论文“on finding dense subgraphs”中提出来用于得到有向图中的最密集群。
5.2.在社交网络中寻找稀疏的群体。
6.shen,c.-y.等人于2017年在论文“on finding socially tenuous groups for online social networks”中首先研究了寻找稀疏群的问题,并采用k-triangle的概念来度量群的稀疏性。虽然基于k-triangle算法可以成功地找到稀疏群,但li,w.于2018年在论文“finding tenuous groups in social networks”中发现,存在这样一种情况,即使图中没有k-triangle,但图中有一些顶点之间的关系很亲密。因此,提出了k-line的概念来度量稀疏性。li,w.提出klma算法来解决该问题,klma算法找到一个k-line数量尽可能少的群体,但不保证不存在k-line。后来,li,y.等人于2020年在论文“querying tenuous group in attributed networks”中研究了在一个属性图中寻找包含特定顶点的稀疏群的问题。li,y.等人首先提出了一个新的问题,即稀疏属性群查询(tagq),并利用k-tenuity来度量一个群体的稀疏程度。此外,还提出了tag-basic方法,通过逐步选择当前最佳顶点来回答tag查询。为了提升查询效率,li,y.等人还设计了一种改进的tag-adv方法。该方法通过计算候选顶点的范围,减少了候选参与者的数量,提高了查询效率。然而,从k-tenuity的计算公式可以看出,最稀疏群的大小越大,即分母越大,k-step邻居数量的容忍度就越大。最近,shen,c.y.等人于2020年在论文“on extracting socially tenuous groups for online social networks with k-triangles”中利用k-triangle来度量群的稀疏性,提出了一个新的研究问题——无边约束的最小k-triangle不连通群查询(mktg),来寻找一个在在线社交网络的结果中没有边的社交稀疏群体。并且shen,c.y.等人设计了tera算法和tera-adv算法来解决mktg问题。


技术实现要素:

7.本发明提供一种高效率的社交网络上查找最稀疏群体方法。
8.为了达到上述技术效果,本发明的技术方案如下:
9.一种在社交网络上查找最稀疏群体方法,包括以下步骤:
10.s1:枚举p个顶点的所有可能组合;
11.s2:返回具有最大距离和平均距离的最稀疏群。
12.进一步地,通过调用分支界限算法枚举大小为p的候选结果集,并优先考虑剩余候选集中顶点距离较大的那些顶点:设ui表示中间结果集;用ur表示候选集,ur用所有的顶点初始化;从ur中选择一个候选顶点加入ui;ur的第一个顶点是候选点;在分支界限算法的每次迭代中,从ur选择第一个顶点加入到ui,当ui不为空时,ur需要根据每个顶点到当前中间结果集的顶点距离进行排序,每次迭代时,ui中包含的顶点是不同的,而ur是根据顶点到ui的顶点距离降序排序的,所以每次迭代都必须重新计算和排序。
13.进一步地,如果顶点x到ui的顶点距离小于当前最大的距离dm,则可以安全从ur中过滤顶点x;由于在查询处理过程中会不断产生各种结果集,这些结果集的最大的距离将被更新为图的最大距离dm。
14.进一步地,若得到了一个结果集h,当前的中间结果集是ui,一个候选顶点x属于ur,如果则候选顶点可以被过滤。
15.进一步地,步骤s2中,设计一个平均距离剪枝策略来进一步剪枝无效分支:设d
ma

从已经获得的结果集中获得的图的最大平均距离,让表示当前ui和ur组成的大小为p的所有结果集中平均距离的上界,如果小于d
ma
,则可以安全地剪掉ui这个分支,计算
[0016][0017]
其中是ui中所有顶点距离的和,和是ur中前p-|ui|个顶点的顶点距离(到ui的顶点距离)之和;候选集ur是根据候选顶点到ui的顶点距离进行排序的,对于中间结果集ui,还需要加入p-|ui|个顶点,对于剩下的p-|ui|个点,选择ur的前p-|ui|个点。当ui是一个空集时,将的值默认为正无穷;当ui只有一个顶点,此时无法计算ui的平均距离,选择从ur中的第(p-2)个顶点到ui的顶点距离作为ui的平均距离,想要选择p个顶点,所以剩下的p-1个顶点需要从ur中选择,所以从ur[p-2]到ui的顶点距离是ui的最大平均距离。
[0018]
进一步地,当ui的大小增大时,会减小,越早计算的越大。对于剩余的p-|ui|个顶点,从ur中的前p-|ui|个顶点中选择的,把更多的顶点加入了ui,记为u
′i,显然ui属于u
′i,因此,小于如果没有从前p-|ui|个点中选择顶点,由于ur是根据顶点距离排序的,所以肯定小于因此,是平均距离上界。
[0019]
进一步地,给定一个图g={v;e},顶点x到顶点y的距离为图g中顶点x到顶点y的最短路径的跳数,记为dg(x,y);给定组h,x到图g中子图h的顶
[0020]
点距离记为dh(x),为顶点x到图内所有其他顶点的距离的最小值,即给定一个图g={v;e};图h是图g的一个子图,
[0021]
图h的距离,记作dh,是图h中的所有顶点到图h的最小的顶点距离:
[0022][0023]
给定一个图g={v;e};图h是图g的一个子图,图h的平均距离距离,记为是图中所有的顶点距离的平均值,即
[0024]
进一步地,给定一个图g={v;e};一个整数p,一个最稀疏群体查询找到一个p个顶点的结果集h,其中h是所有大小为p的图中距离最大的图,在这些拥有最大距离的图中,h还拥有最大的平均距离:
[0025]
|vh|=p
[0026][0027][0028]
进一步地,每次迭代中从ur选择一个顶点到ui来生成组合,ur初始化为所有顶点v,ui为空,如果候选集ur中的候选顶点不足以形成大小为p的结果,需要回溯;否则,检查ui的大小是否为p,如果是p,执行函数updaterg()确定ui是不是最好的结果集(最大的距离和平均距离),如果是,它将最好的结果集存储到集合rg中,并更新相应的距离dm和d
ma
,否则什么也不做。
[0029]
进一步地,由于ui的大小是p,需要回溯来考虑下一个候选点,如果ui的大小不足p,使用平均距离剪枝策略过滤那些不符合的顶点,将ur中的顶点根据其到ui的顶点距离排序,再利用adp策略来判断是否当前ui可以被剪枝,如果不能被剪枝,存储当前ur到(维护当前分支下ur的所有状态),直到为空并返回存储在rg中的最终结果集。
[0030]
与现有技术相比,本发明技术方案的有益效果是:
[0031]
本发明优先选择那些最短路径跳数(称为顶点距离)较大的顶点生成结果集,并利用有效的过滤和剪枝策略来提高算法的效率,根据顶点的度对顶点进行排序并提出新的遍历组合顺序,即基于度的反向分支界限(drbb),优先考虑那些度小的顶点,对于查找p较大的p个顶点的最稀疏群,丢弃度高的候选点以减少要考虑的顶点数量。
附图说明
[0032]
图1为个社交网络图g;
[0033]
图2为基于顶点距离的算法的一个实例;
[0034]
图3为基于顶点度排序的精确算法的一个实例。
具体实施方式
[0035]
附图仅用于示例性说明,不能理解为对本专利的限制;
[0036]
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
[0037]
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
[0038]
下面结合附图和实施例对本发明的技术方案做进一步的说明。
[0039]
本发明研究了最稀疏群查询(mtg查询),其中查询用户不需要设定参数k。mtg查询返回一组大小为p的有最大距离和平均距离的最稀疏群,其中顶点到图中所有点的最短路径跳数的最小值被称为顶点距离,图中所有的顶点距离的最小值被称为距离,图中所有的顶点距离的平均值被称为平均距离。例如,如图1所示,图{u0;u1;u3}的距离为3,因为u0的顶点距离为3,u1的顶点距离为4,u3的顶点距离为3,所以最小的顶点距离是3,而该图的平均距离为(3 4 3)/3=3∶3333。给定图1中p=3的mtg查询,最稀疏的群是{u0;u1;u3}。
[0040]
因此,本发明首先给出最稀疏群体查询问题,且本发明首次提出最稀疏群查询问
题。
[0041]
将形式化定义mtg查询。在此之前,先给出一些基本的定义。
[0042]
给定一个图g={v;e},v是顶点的集合,e是边的集合,那么两个顶点之间的距离定义如下。
[0043]
定义1(两个顶点之间的距离)。给定一个图g={v;e},顶点x到顶点y的距离为图g中顶点x到顶点y的最短路径的跳数,记为dg(x,y)。
[0044]
根据两个顶点之间的距离,给出顶点到图的距离(简称顶点距离)的定义。
[0045]
定义2(顶点距离)。给定组h,x到图g中子图h的顶点距离记为dh(x),为顶点x到图内所有其他顶点的距离的最小值,即
[0046]
一个顶点距离的例子如图1所示。对于一个属于g的图h={u0;u1;u3};u3的顶点距离为3,因为dh(u3,u1)=4,dh(u3,u0)=3。
[0047]
从顶点距离的定义来看,顶点距离越大的顶点对图越稀疏。而且顶点距离拥有包含性质。
[0048]
属性1(包含)。对于图h1组、图h2和图g中的任意顶点x,如果h1属于h2,那么
[0049]
根据顶点距离的定义,定义图的距离和平均距离,如下所示。
[0050]
定义3(图的距离)。给定一个图g={v;e};图h是图g的一个子图,图h的距离,记作dh,是图h中的所有顶点到图h的最小的顶点距离。
[0051][0052]
在图1展示一个图的距离的例子。对于图h1={u0;u1;u3},u0的顶点距离是3,u1的顶点距离是4,u3的顶点距离是3。因此,h1的距离为3,这是三个顶点中最小的顶点距离。同样,图h2={u0;u1;u2}的距离是2。这两个图相比,图h1更稀疏。
[0053]
但是,仅仅以图的距离作为度量标准,当图的图的距离相同时,并不能确定哪个图更稀疏。因此,定义一个图的平均距离来进一步度量图的稀疏性。
[0054]
定义4(图的平均距离)。给定一个图g={v;e};图h是图g的一个子图,图h的平均距离距离,记为是图中所有的顶点距离的平均值,即
[0055]
对于两个子图h3={u1;u2;u7},h4={u1;u6;u8},两图的距离均为2,其中h3的平均距离对于这两个图,进一步使用图的平均距离来衡量稀疏性,得到h4更稀疏。
[0056]
请注意,在衡量图的稀疏程度时,图的距离的优先级高于图的平均距离,因为图的平均距离不能保证最小的图中的最短路径跳数。因此,只有当图的距离相同时,才进一步考虑平均距离。当距离不同时,距离越大,图越稀疏。
[0057]
根据图的距离和平均距离,现在正式定义mtg查询。
[0058]
定义5(mtg查询)。给定一个图g={v;e};一个整数p,一个mtg查询找到一个p个顶点的结果集h,其中h是所有大小为p的图中距离最大的图,在这些拥有最大距离的图中,h还拥有最大的平均距离(假设)。
[0059]
|vh|=p
[0060][0061][0062]
定理1 mtg查询为np-hard问题。
[0063]
证明。图的顶点独立集的问题是确定图gc上是否存在一个大小为p的独立集,即任意两个顶点之间不存在边连接。在mtg查询中,假设g=gc,g中p个顶点的图的最大距离为2,最大平均距离为2。
[0064]
首先证明充分条件。如果在图g上可以找到一个最稀疏群(图的距离为2),那么在图g上一定可以找到一个大小为p的独立集。
[0065]
接下来,证明充分条件。如果gc包含一个大小为p的独立集,那么一定存在一个集合,该集合包含独立集合中的所有顶点,并且满足mtg查询的约束。
[0066]
把必要条件和充分条件的情况结合起来,证明就完成了。
[0067]
由于mtg查询是np-hard问题,因此高效处理mtg查询具有挑战性。处理mtg查询的一个简单策略是枚举p个顶点的所有可能组合,然后返回具有最大距离和平均距离的最稀疏群。这种方法需要评估个候选组合,其中/v/是顶点的总数。虽然这个问题非常具有挑战性,但是由于在大多数场景中p的大小相对较小,所以它仍然是可以处理的。因此,为了有效地处理mtg查询,首先提出一个精确的算法,为mtg-vdis算法,该算法优先选择那些到中间结果集的顶点距离较大的顶点来生成结果集。还利用顶点距离过滤策略和平均距离剪枝策略来减少搜索空间。注意,顶点距离是根据当前中间结果集计算的,因此需要对不同中间组的候选顶点按顶点距离进行排序,这需要花费大量的计算时间与排序时间。接着发现度更小的顶点更有可能出现在结果集中。受此启发,优先选择度数较小的顶点,并按度的升序对所有的顶点进行排序,排序后这个相对顺序将不会再变化。因此,设计了一种新的基于顶点度排序的精确算法:mtg-vdge算法。此外,对于参数p值较大的mtg查询,进一步设计了近似算法,即mtg-vdlt算法。根据前面的发现,顶点度大的顶点出现在结果集的概率变小。因此mtg-vdlt的主要思想是删除度“高”的候选顶点,减少需要探索的顶点数量,从而大大缩短了查询时间。为了确定一个合适的度的阈值来删除那些度“高”的用户,提出了一个代价模型来平衡结果的准确性和查询的运行时间之间的矛盾。
[0068]
本发明首先提出mtg问题的精确算法。本发明提出两种精确算法来有效地处理mtg查询。
[0069]
对于结果集大小为p的mtg查询,一个基本的思想是尽早获得一个距离和平均距离较大的组合,从而有效地过滤一些无效的组合,减少组合枚举的数量。一个关键问题是,应该首先选择哪个用户/顶点来和当前规模小于p的中间集组合。
[0070]
1.基于顶点距离的算法mtg-vdis
[0071]
根据直觉,对于给定的中间结果集,到当前中间结果集的顶点距离大的顶点更有可能出现在答案中,所以提出了一种基于顶点距离的精确算法mtg-vdis,它也利用了有效的过滤策略。mtg-vdis通过调用分支界限(bb)算法枚举大小为p的候选结果集,并优先考虑剩余候选集中顶点距离较大的那些顶点。设ui表示中间结果集。另外,用ur表示候选集,ur用
所有的顶点初始化。从ur中选择一个候选顶点加入ui。一般来说,ur的第一个顶点是候选点。在bb的每次迭代中,从ur选择第一个顶点加入到ui。当ui不为空时,ur需要根据每个顶点到当前中间结果集的顶点距离进行排序。每次迭代时,ui中包含的顶点是不同的,而ur是根据顶点到ui的顶点距离降序排序的,所以每次迭代都必须重新计算和排序。
[0072]
顶点距离过滤(vdf)策略。为了过滤ur中不合格的候选顶点,提出了顶点距离过滤(vdf)策略,如定理2所示。也就是说,如果顶点x到ui的顶点距离小于当前最大的距离dm(从已经得到的结果集中获得),则可以安全从ur中过滤顶点x。注意,由于在查询处理过程中会不断产生各种结果集,这些结果集的最大的距离将被更新为图的最大距离dm。
[0073]
定理2。假设到目前为止已经得到了一个结果集h,当前的中间结果集是ui,一个候选顶点x属于ur,如果则候选顶点可以被过滤。
[0074]
平均距离剪枝(adp)策略。mtg查询不仅需要最大化距离,还需要最大化平均距离。与vdf相似,设计了一个平均距离剪枝(adp)策略来进一步剪枝无效分支。设d
ma
为从已经获得的结果集中获得的图的最大平均距离。此外,让表示当前ui和ur组成的大小为p的所有结果集中平均距离的上界。如果小于d
ma
,则可以安全地剪掉ui这个分支。计算如公式3所示。
[0075][0076]
其中是ui中所有顶点距离的和,和是ur中前p-|ui|个顶点的顶点距离(到ui的顶点距离)之和。如前所述,候选集ur是根据候选顶点到ui的顶点距离进行排序的,对于中间结果集ui,还需要加入p-|ui|个顶点。对于剩下的p-|ui|个点,选择ur的前p-|ui|个点。当ui是一个空集时,将的值默认为正无穷。当ui只有一个顶点,此时无法计算ui的平均距离。选择从ur中的第(p-2)个顶点到ui的顶点距离作为ui的平均距离。因为想要选择p个顶点,所以剩下的p-1个顶点需要从ur中选择,所以从ur[p-2]到ui的顶点距离是ui的最大平均距离。
[0077]
定理3。是平均距离上界。
[0078]
证明。根据属性1,当ui的大小增大时,会减小。越早计算的越大。对于剩余的p-|ui|个顶点,是从ur中的前p-|ui|个顶点中选择的。之后把更多的顶点加入了ui,记为u
′i,显然ui属于u
′i。因此,小于如果没有从前p-|ui|个点中选择顶点,由于ur是根据顶点距离排序的,所以肯定小于
因此,是平均距离上界。
[0079]
mtg-vdis的主要思想是每次迭代中从ur选择一个顶点到ui来生成组合。最初,ur初始化为所有顶点v,ui为空。如果候选集ur中的候选顶点不足以形成大小为p的结果,需要回溯。否则,检查ui的大小是否为p。如果是p,执行函数updaterg()。函数updaterg()确定ui是不是最好的结果集(最大的距离和平均距离)。如果是,它将最好的结果集存储到集合rg中,并更新相应的距离dm和d
ma
,否则什么也不做。此时,由于ui的大小是p,需要回溯来考虑下一个候选点。如果ui的大小不足p,使用vdf策略过滤那些不符合的顶点(定理2),将ur中的顶点根据其到ui的顶点距离排序。然后,再利用adp策略来判断是否当前ui可以被剪枝。如果不能被剪枝,存储当前ur到(维护当前分支下ur的所有状态)。继续执行上述步骤,直到为空并返回存储在rg中的最终结果集。
[0080]
让在图2中展示一个mtg-vdis在社交网络图1中的实例。给定一个p=4的mtg查询。最初,中间结果集ui为空,候选集ur={u0;u1;u2;...;u9}。mtg-vdis首先选择顶点u0进入ui。然后根据其余顶点到ui的顶点距离对候选顶点进行降序排序,从而ur={u1;u9;u2;u5;u3;u4;u6;u7;u8}。然后选择u1进入ui,因为ui的大小不足p,根据新的ui对ur进行排序。此时,ur={u3;u4;u6;u2;u5;u7;u8;u9};接下来,选择u3加入ui,ur={u2;u5;u4;u6;u7;u8;u9}。继续执行这些步骤,将找到一个结果集{u0;u1;u3;u2},并更新距离dm=2,d
ma
=2.25。之后,从ui删除u2,ui返回状态{u0;u1;u3}。然后考虑当前ur中u2之后的顶点u5,ui变成{u0;u1;u3;u5}。由于距离和平均距离与{u0;u1;u3;u2}相同,也把它加入到答案rg中。之后,回溯并考虑分支ui={u0;u1;u4},相应的ur={u2;u6;u8;u9;u5;u7}。由于u8;u9;u5;u7的顶点距离小于2(使用定理2),则对其进行过滤,ur变为{u2;u6}。然后,选择u2进入ui,得到一个可行的结果集。继续上述步骤,最后找到了最脆弱群{u0;u1;u4;u2},{u0;u1;u4;u6},{u0;u1;u6;u5},{u0;u1;u2;u5}。
[0081]
mtg-vdis可以过滤一些不必要的分支,提高了该算法的效率,但是查询时间仍然很长。mtg-vdis需要不断计算候选顶点到中间结果集ui的顶点距离,并对候选集ur进行排序,这是非常耗时的。
[0082]
2.基于顶点度的算法
[0083]
如上所述,mtg-vdis效率低的原因是需要不断地计算候选顶点到中间结果集ui的顶点距离和进行顶点距离排序。受此启发,找到了另一个排序度量-顶点的度,它是不变的,所以只需要在一开始对ur中的所有顶点计算一次。因此,只需要对ur进行一次排序,这可以避免多次排序。而且,还发现如果顶点的度越小,它与大多数顶点的关系就越稀疏。因此,一个度小的顶点更有可能出现在结果集中。如mtg-vdis算法所示,mtg-vdis的组合顺序本质上是一种基于深度距离排序的策略。如果在mtg-vdis中也采用组合顺序,将会考虑到大量包含度大的顶点的无效组合。这显然违背了优先考虑度低的顶点的思想。针对这一缺陷,提出了一种新的组合顺序,即基于度的反向分支界限(drbb)。根据顶点度排序,每次添加一个用户探索用户组合,并对每个用户进行反向分支界限算法。
[0084]
通过使用顶点的度作为排序度量和drbb顺序,开发了另一种精确算法-mtg-vdge算法,mtg-vdge算法使用vdf和adp策略,并对度较低的顶点给予更高的优先级,一次一个用
户探索用户组合。算法2给出了mtg-vdge的伪代码。首先,在算法开始之前,计算每个顶点的度,然后根据顶点的度对它们进行升序排序。和mtg-vdis不一样的是,ur用排序的顶点初始化。mtg-vdge探索从ur的第(p-1)个元素到最后一个元素的顶点v的组合,且一开始ui被赋予为顶点v。由于改变了遍历顺序,剩下的候选集ur的赋值也需要改变为中v之前的顶点。保存的是ui前一个状态的候选集。然后执行vdf和adp策略。注意算法2的adp策略与mtg-vdis略有不同,因为顶点是按度排序的,相对顺序保持不变。为了剪枝无效分支,需要修改的计算,如公式4所示。之后,mtg-vdge通过调用递归函数drbb组合每个新顶点v来探索所有的答案,其伪代码见算法3。
[0085][0086]
其中d
sum
为前p-|ui|的顶点距离之和。
[0087]
以图1中的社交网络为例说明mtg-vdge算法,如图2所示。给定一个mtg查询,假设p=4。开始时,中间组ui为空,其余候选顶点按度排序,ur={u0;u1;u2;u5;u8;u3;u4;u6;u9;u7}。将保持这些顶点的相对顺序直到mtg-vdge结束。通过使用drbb顺序,首先考虑前4个用户(p=4)。那么就会得到一个结果集ui={u5;u2;u1;u0}。同时,更新距离dm=2,d
ma
=2.5。根据mtg-vdis的例子,答案集中包含结果集{u5;u2;u1;u0}。因为需要返回所有最稀疏群,所以算法继续。然后探索顶点u8和度排序中排在u8之前的顶点之间的组合(即u0;u1;u2;u5)。这时,ui={u8},dm=2,根据vdf策略过滤了顶点u0。根据adp策略,计算出是此时ui与ur的平均距离的上界,因此{u8}这个分支不能被剪枝。然后,从分支{u8}开始,mtg-vdge调用drbb函数来研究答案集。因为ur={u1;u2;u5},drbb将第p-|ui|-1=2个元素u5添加到ui中。此时,ui={u8;u5},ur={u1;u2}是中u5之前的顶点接着,u2被插入到ui中,计算ui={u8;u5;u2}的平均距离的上界小于d
ma
=2∶5,因此该分支被剪枝,组合u8并没有有效的结果。然后,考虑顶点u3与u3之前的顶点的组合(即u0;u1;u2;u5;u8)。与u8相似,找不到与u3组合的结果集。继续上述步骤,最后找到了最稀疏群{u5;u2;u1;u0},{u4;u2;u1;u0},{u6;u5;u1;u0}和{u6;u4;u1;u0}。
[0088]
接下来提出一种近似算法mtg-vdlt,它是根据顶点的度来设计的。
[0089]
3.近似算法
[0090]
如前所述,顶点的度对实验结果有很大的影响。实验表明,度越小,出现在结果集中的概率越高。一个自然的想法是适当地丢弃一些度“高”的顶点,并利用精确的算法从剩余的顶点来探索组合,不仅保证一个可接受的结果,而且还加快了查询效率。这里出现的一个关键问题是“多大的度叫高”?
[0091]
首先,使用平均度作为阈值是很自然的一个想法,即删除度大于平均度的顶点。
[0092]
但是,实验结果表明,仍然存在许多度小于平均度的顶点,这并不能大幅度提高查询效率。另一种极端的方案是确保度小于或等于阈值(记为θ0)的顶点数量大于p。基于此,提出如下代价模型。
[0093]
(1)代价模型
[0094]
代价模型平衡了结果集的准确性和运行时间这两个因素。为了衡量一个结果集的准确性,定义了准确性,记为s,如公式5所示。
[0095][0096]
其中d
apx
是mtg-vdlt近似算法返回的最稀疏群的距离,d
exa
是精确算法返回的结果集的距离,是mtg-vdlt近似算法返回的最稀疏群的平均距离,是精确算法返回的结果集的平均距离。用于归一化。公式5保证距离越大的结果集s越大。当距离相同时,s与平均距离正相关。
[0097]
首先,指定一个小的阈值θ,例如θ0,并记s
θ
为该阈值下得到的结果集的5的值,t为该阈值下算法所需的时间。接下来,继续将阈值增加1,即θ 1。在当前阈值θ 1下,得到的结果集的s记为s
θ 1
,所需时间为t

。因此,的代价模型为如图3所示。如果该代价c大于0,说明得到更好的准确性所需的时间太多,则停止增加阈值,将θ作为最终阈值。如果c小于0,继续给阈值加1。
[0098]
根据图1的社交网络说明代价模型,假设p=4。首先,将阈值指定为2,因为图中有5个度小于等于2的顶点,5大于p。当阈值为2时,计算运行时间与结果集准确性的比值,即0.006。然后增加阈值,当阈值为3时,运行时间与结果集的准确性之比为0.032。因为阈值为3时的比值大于阈值为2时的比值,因此程序结束,结果集{u0;u1;u2;u5}会被输出。
[0099]
相同或相似的标号对应相同或相似的部件;
[0100]
附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;
[0101]
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献