关键词:
社团检测
k核
加权图
紧密子图
贪婪策略
摘要:
紧密子图查询作为图查询的研究热点之一,在很多领域都有着重要的应用。现有的研究中已有许多紧密子图查询方法,如基于模块度优化的算法、谱方法、非负矩阵分解等。对于紧密子图的定义也有多种,常见的有k架(k-truss)、k团(k-clique)、k核(k-core)等。其中k核的定义要求图中每个节点至少有k个邻接节点,即每个节点的度至少为k。根据该定义,k核可以在线性时间复杂度内计算得到,具有较好的应用基础,已在许多方面有所研究与应用。由于k核只考虑图中节点和边的关系,据此得到的仅是一个边稠密的子图。但在很多场景下的图数据还会包括更多其它属性,若在查询紧密子图时不考虑这些属性则所得到的结果缺乏实际意义。在现有的k核研究中,已有部分文献开始结合图中的其它属性,如:图的关键词属性、图的空间位置属性、图的节点影响力属性等。但目前对于k核紧密子图的查询中,结合图中边权值的研究还较少,而在很多场景下,图中边的权值往往具有很强的语义关系。考虑到这一点,本文提出了一个新的紧密k核子图查询问题。目前对于紧密子图的查询,主要有两个研究方向:社团搜索和社团检测。本文所提出的问题属于紧密子图查询中的社团检测问题,其查询得到所有符合要求的连通子图。并且,本文考虑到查询最紧密子图往往会消耗较多的时间,在一些应用场景下也并不需要查询子图权重的最值。为此,本文所提的问题不局限于社团检测中最值的查询,子图只需满足给定的节点平均权值即可,而该值可以根据实际应用需求给出,具有更高的灵活性,能适应更多的查询场景。本文主要完成的工作如下:(1)提出了在加权图中查询联系紧密的连通k核子图问题,简记为紧密k核子图查询(Query Closely Relatedk-Core Subgraph,QCRKS)问题,其描述如下:给定核值k、节点平均权值,在加权图中查询紧密连通k核子图,该子图节点平均权值大于等于。随后通过多项式规约的方法,证明了QCRKS问题是一个NP-难问题。(2)由于无法为QCRKS问题找到一个在多项式时间复杂度内的最优算法,故本文为该问题设计了启发式算法CRK-G,其先在原图中查询一个最大连通k核作为候选子图,然后采用贪心策略通过在候选子图中不断迭代删除权值最小的节点,从而得到满足条件的紧密k核子图。(3)为提高CRK-G算法的效率,本文在其基础上进行改进,设计了CRK-C和CRK-F算法。CRK-C算法使用图压缩策略,在迭代之前先将权值相近节点进行合并,从而降低候选子图的规模。CRK-F算法使用单次多节点删除策略,每次迭代从候选子图中删除多个节点,从而减少迭代次数。两个算法分别从降低图规模和减少迭代次数两个方面出发,提高了查询效率,其查询速度明显高于CRK-G算法。(4)通过在真实数据集上的实验,对比了3种算法在不同查询场景下的查询效率,验证了算法的误差,分析了图压缩算法的有效性,以及最后通过与传统k核方法的对比和一个实例分析验证了本文所提模型的有效性。