gSpan算法执行步骤详解示例

news2024/11/15 13:06:14

目录

  • 1. 问题描述
  • 2. gSpan算法步骤
    • 2.1 数据预处理
    • 2.2 深度递归挖掘频繁子图
      • 2.2.1 获取所有的频繁边
      • 2.2.2 深度递归挖掘频繁子图
  • 参考文献

1. 问题描述

gSpan 是一款图规则挖掘算法,目标是从现有的图集中挖掘频繁子图。如下图中包含三个图:
图集
其中圆圈为顶点,连线为边,顶点包含两项信息:顶点表示和订单标签,如“0:A”表示顶点标识为0,顶点标签为A。边包含一项信息,即边的标签。
gSpan的目标是找出上述图集中所有的频繁子图(按标签进行查找)。例如将支持度设置为3,可以看出最大的频繁子图如下:
最大频繁子图
上图中只标注了最大频繁子图。

2. gSpan算法步骤

2.1 数据预处理

gSpan算法的首先会去除支持度小于设定阈值的顶点和边,因为如图某个顶点或某条边支持度小于设定阈值,那么包含这些点和这些边的子图支持度肯定也小于设定阈值。去除后得到的结果如下:
去除无效顶点和边
其中灰色的顶点和边为删除的顶点和边(虽然顶点D的支持度等于设定阈值3,但是没有边与顶点D相连因此删除顶点D)

2.2 深度递归挖掘频繁子图

2.2.1 获取所有的频繁边

遍历所有的图,构建边和所在图的映射字典,字典的key为以顶点标签和边的标签组成的三元组(<起始点标签,边标签,终止点标签>),value为该边所在的图的集合。例如边<A,a,B>,出现在图1,图2,图3中,则字典中key为<A,a,B>对应的value为数组“[图1,图2,图3]”。
通过上图构建的完整字典信息如下:

key(边)Value(边所在的图组成的数组)
<A,a,B>[图1,图2,图3]
<A,b,C>[图1,图2,图3, 图3]
<B,b,C>[图1,图2,图3]
<C,c,A>[图1,图2,图3]

2.2.2 深度递归挖掘频繁子图

获取频繁边后,遍历频繁边,以频繁边作为起始边,并递归扩展边,查找频繁子图。边的扩展包括三种三种方式:
扩展边的三种方式
以边<A,a,B>为例:

  • 第一优先级扩展的边为最右侧顶点到之前顶点的边,在<A,a,B>所在的图中查找顶点B到A的边,但所有图中均无此边,因此无第一优先级扩展边

  • 因为只有两个订单因此不存在第二优先级

  • 第三优先级为从最右侧端点B扩展出的边,遍历<A,a,B>所在的图,查找端点B扩展出的边为,可得:<B,b,C>,并记录该边所在的图[图1,图2,图3]

  • 接着扩展第四优先级的边(因为只有两个订单,也没有第四优先级的边)

  • 遍历<A,a,B>所在的图,查找顶点A扩展出的其他边,为:<A,b,C>,该边所在的图为[图1,图2,图3]

    共找到2条扩展边,且支持度均达到最小阈值:<B,b,C>和<A,b,C>
    扩展边
    先加入扩展边<B,b,C>,并继续扩展(在<A,b,B><B,b,C>所在的图中查找):

  • 第一优先级扩展边:查找C到A的边,为<C,c,A>,该边所在的图为[图1,图2,图3]

  • 第二优先级扩展边:查找C到B的边,未找到对应的边,因此无第二优先级扩展边

  • 第三优先级扩展边:从最右侧顶点扩展出的到其他边,未找到,因此无第三优先级扩展边

  • 第四优先级扩展边:查找从顶点B扩展出的到其他边,未找到,因此无第四优先级扩展边

  • 第五优先级扩展边:查找从从顶点A扩展出的到其他边,为<A,b,C>,其所在的图为[图1,图2,图3]

    扩展边
    共找到两条边:<C,c,A>,<A,b,C>,这两条边的支持度均达到最小阈值
    先加入<C,c,A>并继续扩展(在<A,a,B><B,b,C><C,c,A>所在的图中进行查找)

  • 第一优先级:查找A到B的其它边,未找到

  • 第二优先级:查找A到C的其它边,找到<A,b,C>,改边所在的图为[图1,图2,图3]

  • 第三优先级:查找A出发的其它边,未找到

  • 第四优先级:查找C出发的其它边,未找到

  • 第五优先级:查找B出发的其它边,未找到

只找到一条边:<A,b,C>,且支持度达到最小阈值。
扩展边
加入边<A,B,C>,并继续扩展,发现五个优先级扩展边都不存在,则退回上一步
在<A,a,B><B,b,C>中加入扩展边<A,b,C>,并继续扩展,以此类推,直到找出所有频繁子图。

参考文献

[1]. 数据挖掘之子图模式
[2]. gSpan频繁子图数据挖掘代码及原理解析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/854752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos安装python3的多个版本

标题 原本安装了python3.6&#xff0c;但是又有一个项目需要py3.7&#xff0c;所以需要让两个版本共存 操作 1、下载py3.7 wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz2、解压 tar -xzvf Python-3.7.3.tgz进入到文件夹 cd Python-3.7.33、安装 本人c…

【Go 基础篇】Go语言初探:第一段代码与执行过程解析

介绍 Go语言&#xff08;也称为Golang&#xff09;作为一门现代化的编程语言&#xff0c;以其简洁的语法、高效的性能和丰富的标准库而受到了广泛关注和使用。对于初学者来说&#xff0c;编写和执行第一段Go代码是迈向这门语言的重要一步。本篇博客将带您深入了解Go语言的第一…

BLE蓝牙协议栈分析

BLE——协议层次结构 一、BLE Controller Controller实现射频相关的模拟和数字部分&#xff0c;完成最基本的数据发送和接收&#xff0c;Controller对外接口是天线&#xff0c;对内接口是主机控制器接口HCI&#xff08;Hostcontroller interface&#xff09;&#xff1b; 控制…

46.利用matlab绘制维安尼曲线(matlab程序)

1.代码 clear close all syms s t k u r; x12*sin(s)*cos(t);y12*sin(s)*sin(t);z12*cos(s); x2-2*cos(k)*cos(k);y22*sin(k)*cos(k);z2u; subplot(1,2,1);ezmeshc(x2,y2,z2,[0,pi,-2,2]); %绘制圆柱面 hold on; ezsurf(x1,y1,z1,[-pi,pi,0,pi]); %绘制球面 title( 球面与圆柱…

SpringBoot--发邮件的方法(有示例)

原文网址&#xff1a;SpringBoot--发邮件的方法(有示例)_IT利刃出鞘的博客-CSDN博客 简介 本文介绍SpringBoot发邮件的方法(有示例)。 依赖 pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-ma…

nginx简介与安装配置,目录结构和配置文件介绍

一.nginx简介 1.简介 2.特性 二.nginx安装 1.rpm包方式 &#xff08;1&#xff09;下载扩展源 &#xff08;2&#xff09;安装扩展rpm包&#xff0c;nginx -V查看配置参数&#xff0c;后面源码安装时要用到 2.源码方式 &#xff08;1&#xff09;建议提前下好所需要的部…

C语言系列之原码、反码和补码

一.欢迎来到我的酒馆 讨论c语言中&#xff0c;原码、反码、补码。 目录 一.欢迎来到我的酒馆二.原码 二.原码 2.1在计算机中&#xff0c;所有数据都是以二进制存储的&#xff0c;但不是直接存储二进制数&#xff0c;而是存储二进制的补码。原码很好理解&#xff0c;就是对应的…

Python读取excel数据并创建文件目录树-全解析过程及逻辑

需求描述&#xff1a; 需要将以下excel内的结构解析&#xff0c;并创建对应的文件目录 实现思路&#xff1a; 实现思路是通过解析Excel文件中的目录结构&#xff0c;并根据目录结构创建对应的文件夹。 具体的实现步骤如下&#xff1a; 1. 加载指定的Excel文件&#xff0c…

阿里云内容审核服务使用(图片审核)

说明&#xff1a;在项目中&#xff0c;我们经常会对用户上传的内容&#xff08;如文字、图片&#xff09;等资源内容进行审核&#xff0c;审核包括两方面&#xff0c;一方面是内容与描述不符&#xff0c;一方面是违反法律法规。本文介绍使用阿里提供的内容审核服务&#xff0c;…

《算法竞赛·快冲300题》每日一题:“最大团”

《算法竞赛快冲300题》将于2024年出版&#xff0c;是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码&#xff0c;以中低档题为主&#xff0c;适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 最…

zookeeperAPI操作与写数据原理

要执行API操作需要在idea中创建maven项目 &#xff08;改成自己的阿里仓库&#xff09;导入特定依赖 添加日志文件 上边操作做成后就可以进行一些API的实现了 目录 导入maven依赖&#xff1a; 创建日志文件&#xff1a; 创建API客户端&#xff1a; &#xff08;1&#xff09…

Java实现八皇后问题

八皇后问题说明 八皇后问题&#xff0c;是一个古老而著名的问题&#xff0c;是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯贝瑟尔于 1848 年提出&#xff1a;在 88 格的国际象棋上摆放八个皇后&#xff0c;使其不能互相攻击&#xff0c;即&#xff1a;任意两个皇后都不…

【数据库】Redis可以替代Mysql吗

Redis和Mysql的搭配 Redis可以替代Mysql吗什么是RedisRedis适用的场景以及优点Redis的缺点 什么是MysqlMysql的优点Mysql缺点 总结 Redis可以替代Mysql吗 Redis不能代替MySQL&#xff0c; Redis和MySQL只能是一种互补。 什么是Redis Redis是一种非关系型数据库&#xff0c;也…

IDEA全局设置MyBatis中写SQL语句提示

把这两个设置改成MySQL即可&#xff1a;

clickhouse 删除操作

OLAP 数据库设计的宗旨在于分析适合一次插入多次查询的业务场景&#xff0c;市面上成熟的 AP 数据库在更新和删除操作上支持的均不是很好&#xff0c;当然 clickhouse 也不例外。但是不友好不代表不支持&#xff0c;本文主要介绍在 clickhouse 中如何实现数据的删除&#xff0c…

获取Spring中bean工具类

获取Spring中bean工具类 工具类 package com.geekmice.springbootselfexercise.utils;import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org…

【分布式系统】聊聊流量和数据调度

对于分布式系统来说&#xff0c;除了监控层面、以及服务治理层面&#xff0c;还有两个层面流量和数据调度。流量调度其实比较好理解&#xff0c;就是用户请求的流量&#xff0c;如何按照一定的策略算法打到不同的机器上。以及如何实现一个高可用、高性能的流量调度平台。而数据…

《CUDA C++ Programming Guide》第二章 CUDA 编程模型概述

2.1 内核 CUDA C 通过允许程序员定义称为kernel的 C 函数来扩展 C&#xff0c;当调用内核时&#xff0c;由 N 个不同的 CUDA 线程并行执行 N 次&#xff0c;而不是像常规 C 函数那样只执行一次。 使用 __global__ 声明说明符定义内核&#xff0c;并使用新的 <<<...&g…

CTF PWN之精确覆盖变量数据

刚开始接触pwn的朋友在做pwn练习时可能会有这样的疑问&#xff0c;怎么做到精确覆盖变量数据呢&#xff1f; 我们做pwn练习之前需要先知道&#xff1a;命令行参数C语言的main函数拥有两个参数&#xff0c;为int类型的argc参数&#xff0c;以及char**类型argv参数。其中argc参数…

进入现代云技术的世界-APIGateway、ServiceMesh、OpenStack、异步化框架、云原生框架、命令式API与声明式API

目录 APIGateway Service Mesh OpenStack 异步化框架 云原生框架 命令式API与声明式API APIGateway API网关&#xff08;API Gateway&#xff09;是一个服务器——充当了客户端和内部服务之间的中间层。API网关负责处理API请求&#xff0c;将客户端的请求路由到相应的后端…