图解gSpan

频繁子图挖掘的基本概念

参考 https://blog.csdn.net/qq_41653753/article/details/79112436

gSpan

为了遍历图,gSpan算法采用深度优先搜索。初始,随机选择一个起始顶点,并且对图中访问过的顶点做标记。被访问过的顶点集合反复扩展,直到建立一个完全的深度优先搜索 (DFS) 树。(图中加粗的边)
如下图所示:
在这里插入图片描述
基于边序,如果用5元组(i ,j ,L(i), L(i,j), L(j)) 表示边,其中 L(j) 和 L(i)
分别是 v(i) 和 v(j) 的标记,而 L(i,j) 是连接它们的边的标记, 则在这里插入图片描述
在这里插入图片描述

gSpan最右路径扩展规则

给定图G 和G 的DFS树T ,一条新边e 可以添加到最右节点和最右路径上另一个节点之间(后向扩展);或者可以引进一个新的节点并且连接到最右路径上的节点(前向扩展)。由于这两种扩展都发生在最右路径上,因此称为最右扩展。 (黑点为最右路径)第一优先级始终是将当前结束顶点链接回第一个顶点(标记为0的顶点)。如果那是不可能的,我们看看是否可以将它链接回第二个顶点(标记为1的顶点)。如果我们有一个更大的子图,我们将继续尝试链接到第3,第4等,如果可能的话。如果这些都不可能,那么我们的下一个(第三个)优先级是从我们所处的顶点(上面标记为4)增长,并使链长得更长。如果这不起作用,我们回到父节点,再退一步,然后尝试从那里开始增长(图(e))。如果这不起作用,那么我们再向上迈出一步,并尝试从那里成长(下面的第五个例子)。
在这里插入图片描述

gSpan伪代码

在这里插入图片描述

实例

找出图中的所有个数不小于3频繁子图
步骤一:图里共有有7个alpha(α)顶点,8个beta(β)顶点和14个lambda(λ)顶点。有15个边缘为纯蓝色,13个为双红色,8个为绿色点缀。现在我们已经有了这些计数,我们需要将顶点和边的原始标签排序成一个代码,这将有助于我们稍后对搜索进行优先级排序。为此,我们创建一个代码,该代码以具有最高计数的顶点和边开始降序排列标号。在这里插入图片描述
我们首先查看各个边(例如A,b,A),看看它们是否满足此最小支持阈值。我将从查看顶部的第一个图表开始。有一个边是(B,a,C),我需要计算有多少图有这样的边。我可以在第一张图,第二张图,第三张图和第四张图中找到它,因此它支持4; 我们会保留那一个。还要注意我可以选择将该边写为(C,a,B),但是选择用B作为起始顶点来编写它,因为我们在上面建立了它的顺序。我们继续前进并检查(A,a,C)并发现它只能在第一个图中找到; 它被丢弃了。我们检查(A,c,C)并在前4个图中找到它; 收下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们基于优先级规则的下一步是尝试将顶点3(‘C’)链接到根或’A’。我们可以选择的唯一常用边是(C,c,A)。
在这里插入图片描述
这仅存在于我们的一个图表中,因此我们将进入下一个增长优先级。由于在顶点3处的’C’与’B’和顶点1之间已经存在链接,因此第二优先级不是一个选项,因此我们尝试再次从顶点3处的’C’增长/延伸。我们可以添加(C,a,B)或(C,c,A)。添加(C,a,B)看起来像这样
在这里插入图片描述
我们尝试添加(C,c,A)。但在我们留下的任何图表中都找不到它。由于我们在这里再次走向死胡同,我们将进入我们的第五个优先增长选择:再次从根增长。如果我们试图从根’A’增长,我们可以使用(A,b,B)或(A,c,C)。从(A,b,B)开始,我们将得到一个如下所示的子图

 在这里插入图片描述
这在我们的任何图表中都找不到,所以我们尝试添加(A,c,C)作为我们最后的努力
在这里插入图片描述
support=0,回到最近一个待定状态(1,3,B,b,A),其support<3,继续回到(0,4,A,c,C)support<3,继续回到上一个待定状态(0,2,A,c,C)。
在这里插入图片描述
我们可以从C节点扩展,我们的两个选项是(2,3,C,a,B)和(2,3,C,c,A)添加(2,3,C,a,B)看起来像这样
在这里插入图片描述
第一条边扩展结束,下面来扩展第二条边(0,1,A,c,C)此时在原图中去掉(A,b,B)边。原图变为
在这里插入图片描述
经过一系列扩展后得到
在这里插入图片描述
下面来扩展第三条边(0,1,B,a,C)此时在原图中去掉(A,b,B),(A,c,C)边。原图变为
在这里插入图片描述
经过一系列扩展后得到
在这里插入图片描述
综上所述,所有的频繁子图为:
在这里插入图片描述

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值