本发明涉及大数据图查询领域,尤其涉及一种基于贪婪策略的紧密k核子图查询方法。
背景技术:
在现有的大部分研究中,关于k核社团查询使用的图都是未加权的图,其只考虑从图中寻找一个稠密且内聚的结构,却很少关注图中节点与节点之间联系的紧密程度。为解决这个问题,有文献提出在加权图中查询亲密核心组(queryingintimate-coregroups,qicg)问题,其将图中边的权值考虑在内,图中各边权值之和越小则表示图内节点越亲密。qicg问题给定加权图g,查询节点集q,目标是在加权图中查询包含查询节点集q且边权值总和最小的子图。
但在现实生活中的大多数应用场景下,qicg存在如下问题:
1、需要查询的社团仅包含给定的节点集;
2、节点之间边的权值越大则联系的紧密程度就越高,而qicg问题却与之相反;
3、在很多的应用中并不需要查询社团权重的最值。
技术实现要素:
针对上述现有技术中的不足,本发明提供一种基于贪婪策略的紧密k核子图查询方法,其所得到的图是一个具有一定规模、内部稠密、联系紧密且连通的结构,具有更好的可扩展性,更加的贴合实际应用场景。
为了实现上述目的,本发明提供一种基于贪婪策略的紧密k核子图查询方法,包括步骤:
s1:进行连通k核查询,得到候选子图集合;
s2:若当前所述候选子图集合不满足紧密子图的条件,在所述候选子图集合中迭代删除节点权值最小的节点;
s3:删除当前所述候选子图集合中节点度小于k的节点;
s4:重复步s2~s3直至当前所述候选子图集合的节点平均权值大于第一阈值wq或当前所述候选子图集合的节点数小于第二阈值nq;
s5:返回当前所述候选子图集合,所述候选子图集合为满足条件的紧密k核子图集。
优选地,所述s1步骤进一步包括步骤:
s11:计算目标图中每个节点的核值;
s12:对所述目标图进行k核分解后使用广度优先搜索找到连通k核的所述候选子图集合sh,所述候选子图集合sh包括多个候选子图。
优选地,所述s2前还包括步骤:
遍历每个所述候选子图,若所述候选子图的节点数小于给定的所述第二阈值nq,则将该候选子图从所述候选子图集合sh中移除;
若所述候选子图的节点数大于等于第二阈值nq且所述候选子图的节点平均权值大于等于所述第一阈值wq,则保留该候选子图,否则在所述候选子图集合sh迭代删除节点权值最小的节点。
优选地,所述s2步骤中,若所述候选子图的节点数小于所述第二阈值nq,认为当前所述候选子图集合不满足紧密子图的条件。
优选地,所述s1步骤前还包括步骤:对所述目标图进行压缩。
优选地,所述对所述目标图进行压缩步骤进一步包括步骤:
先将所述目标图中权值相近的节点合并,得到超节点;
所述超节点包含的节点若在原图中存在边,则在所述超节点之间构建超边;
最后将所述超边的权值设为两个所述超节点之间所包含的节点在原图中边权值的总和。
优选地,还包括步骤:按照一删除规则删除所述节点。
优选地,所述删除规则为:
设置每次迭代时的删除比率γ,γ∈(0,1),若所述候选子图的节点数为|v(h)|,设每次迭代时待删除节点集为s,则所述待删除节点集s的数量|s|=γ(|v(h)|-nq);所述待删除节点集s的取值通过对每次迭代后剩余子图的节点按节点权值进行排序,权值最小的前γ(|v(h)|-nq)个节点组成的集合即为所述待删除节点集s;在下一次迭代删除时,所述待删除节点集s即作为需要从所述候选子图中删除的节点集。
本发明由于采用了以上技术方案,使其具有以下有益效果:
本发明提出的基于贪婪策略的紧密k核子图查询方法,其结合了节点的语义关系,不局限于以往社团查询中只包含给定节点集的查询,且不专注于查询社团权重的最值,具有更好的可扩展性,更加的贴合实际应用场景。
其能够有效的进行紧密k核子图查询。为提高查询效率,从降低图规模和减少迭代次数两方面出发,又分别使用图压缩策略,以及使用单次多节点删除的策略,改进后的方法能够更快的、更加高效的进行紧密k核子图的查询。
附图说明
图1为本发明实施例的基于贪婪策略的紧密k核子图查询方法的流程图;
图2为本发明实施例的加权图g;
图3为本发明实施例的连通2核子图h’;
图4为本发明实施例的紧密连通k核子图的查询结果图;
图5为本发明实施例的压缩前的候选子图h’;
图6为本发明实施例的压缩后的候选子图h′c。
具体实施方式
下面根据附图1~图6,给出本发明的较佳实施例,并予以详细描述,使能更好地理解本发明的功能、特点。
请参阅图1,本发明实施例的一种基于贪婪策略的紧密k核子图查询方法,包括步骤:
s1:进行连通k核查询,得到候选子图集合;
s2:若当前候选子图集合不满足紧密子图的条件,在候选子图集合中迭代删除节点权值最小的节点;
s3:删除当前候选子图集合中节点度小于k的节点;
s4:重复步骤s2~s3直至当前候选子图集合的节点平均权值大于第一阈值wq或当前候选子图集合的节点数小于第二阈值nq;
s5:返回当前候选子图集合,候选子图集合为满足条件的紧密k核子图集。
s1步骤进一步包括步骤:
s11:计算目标图中每个节点的核值;
s12:对目标图进行k核分解后使用广度优先搜索找到连通k核的候选子图集合sh,候选子图集合sh包括多个候选子图。
s2前还包括步骤:
遍历每个候选子图,若候选子图的节点数小于给定的第二阈值nq,则将该候选子图从候选子图集合sh中移除;
若候选子图的节点数大于等于第二阈值nq且候选子图的节点平均权值大于等于第一阈值wq,则保留该候选子图,否则在所述候选子图集合sh迭代删除节点权值最小的节点。
s2步骤中,若候选子图的节点数小于第二阈值nq,认为当前候选子图集合不满足紧密子图的条件。
s1步骤前还包括步骤:对目标图进行压缩。
对目标图进行压缩步骤进一步包括步骤:
先将目标图中权值相近的节点合并,得到超节点;
超节点包含的节点若在原图中存在边,则在超节点之间构建超边;
最后将超边的权值设为两个超节点之间所包含的节点在原图中边权值的总和。
还包括步骤:按照一删除规则删除节点。
删除规则为:
设置每次迭代时的删除比率γ,γ∈(0,1),若候选子图的节点数为|v(h)|,设每次迭代时待删除节点集为s,则待删除节点集s的数量|s|=γ(|v(h)|-nq);待删除节点集s的取值通过对每次迭代后剩余子图的节点按节点权值进行排序,权值最小的前γ(|v(h)|-nq)个节点组成的集合即为待删除节点集s;在下一次迭代删除时,待删除节点集s即作为需要从候选子图中删除的节点集。
例如:图4即为加权图g(图2)在给定k=2,nq=5,wq=20得到的紧密2核子图h。图h的每个节点都至少有2个邻节点,并且节点数等于5,平均节点权值为21.6,均大于等于给定值。
具体实施细节如下:
请参阅图2~图4,给定图g(见图2),核值k=2,节点数nq=5,节点平均权值wq=20。算法首先查询得到连通2核候选子图h′,随后开始判断子图h′的节点数和节点平均权值是否符合给定的值,经计算发现节点数大于5,节点平均权值小于20。故开始删除最小权值的节点e。删除节点e后平均节点权值依然小于20,则再次删除节点s、节点r,删除节点s和节点r导致节点p的度小于2,则再将节点p删除。重复上述步骤再依次删除节点o、节点h,最终得到图4中满足条件的紧密2核子图h。
本实施例对目标图进行压缩的示例如下:
请参阅图5和图6,其中,图5表示的是一个2核候选子图,节点a、节点c和节点d的权值分别为ω(a)=25,ω(c)=26,ω(d)=27,节点之间的最大差值为2,当压缩阈值θ=0.01时,最大允许的权值差值为2.5(θω(a)=2.5),所以节点a、节点c和节点d可以被压缩为一个超节点s1。由于图h′中节点a、节点c与节点b存在边,而节点b压缩后由超节点s2表示,故超节点s1和超节点s2之间存在边,边的权值为原图中边(a,b)和边(c,b)的权值之和,即7+3=10。依据上述压缩步骤,最终该候选子图h′经过压缩得到了图h′c,压缩后图的规模与原图h′对比明显有所降低,压缩比cr=7/18≈0.39。
本发明实施例的一种基于贪婪策略的紧密k核子图查询方法,在原图中查询一个最大连通k核作为候选子图,然后采用贪心策略通过在候选子图中不断迭代删除权值最小的节点,从而得到满足条件的紧密k核子图。
通过对目标图进行压缩,在迭代之前先将权值相近节点进行合并,从而降低候选子图的规模。
通过删除规则的采用,使用单次多节点删除策略,每次迭代从候选子图中删除多个节点,从而减少迭代次数。
对目标图进行压缩和删除规则分别从降低图规模和减少迭代次数两个方面出发,提高了查询效率。
以上结合附图实施例对本发明进行了详细说明,本领域中普通技术人员可根据上述说明对本发明做出种种变化例。因而,实施例中的某些细节不应构成对本发明的限定,本发明将以所附权利要求书界定的范围作为本发明的保护范围。