cpm(派系过滤算法)实现社区发现

2023-10-27

注意:

(1)派系过滤CPM方法(clique percolation method)用于发现重叠社区,派系(clique)是任意两点都相连的顶点的集合,即完全子图。

(2)所有彼此连通的k-派系构成的集合就是一个k-派系社区,其中一个k-派系与另一个k-派系有k-1个节点重叠,则这两个k-派系是连通的

1.1 方法

1.1.1从小派系到k-派系-社区

为了更精确,我们的算法首先提取网络中不属于更大的完全子图的所有完全子图。(此过程的细节将在第1.1.2节中讨论。)这些极大完全子图简称为派系,而k-派系与派系的区别在于k-派系可以是更大的完全子图的子集。

一旦找到了派系,派系-派系重叠矩阵就准备好了。在该对称矩阵中,每一行(和一列)表示一个派系,矩阵元素等于对应的两个派系之间的公共节点数,对角线项等于派系的大小。(注意,两个派系的交集总是一个完整的子图)。

给定k值的k-派系-社区等价于这样的连接集团组件,其中相邻的集团通过至少k−1个公共节点相互连接。

这些分量可以通过擦除每一个小于k−1的非对角项来找到以及矩阵中每一个小于k的对角元素,用1替换剩下的元素,然后对这个矩阵进行分量分析。

图1:使用派系-派系重叠矩阵提取k = 4处的k-派系-社区的简单说明。左上方的图片显示了不同派系用不同颜色标记的图表。根据派系-派系重叠矩阵显示在右上角。为了得到k = 4时的k-派系-社区,我们删除了小于3的非对角元素和小于4的对角元素,得到如图左下角所示的矩阵。与此矩阵相对应的连接组件(k-派系-社区)显示在右下角。

产生的独立组件相当于不同的k-派系-社区。图1给出了上述情况的一个简单说明。

该方法的另一个优点是,派系-派系重叠矩阵编码了对任意k值获取群落所需的所有信息,因此一旦构造了派系-派系重叠矩阵,就可以非常快速地获得k所有可能值的k-派系-社区。与此相反,在一个简单的k-派系查找方法中,对于每一个k值,都必须从头重新开始搜索k-派系。

1.1.2定位派系

如上一节所述,与k-clique相比,clique不能是更大的clique的子集,因此它们必须按照大小递减的顺序排列。根据结点度序列确定所研究图中可能的最大团数。从这个派系的大小(规模)开始,我们的算法反复选择一个节点,提取包含该节点的这个大小的每个派系,然后删除该节点及其边。(删除已经检查过的节点将阻止多次查找相同的派系)。当没有节点留下时,团的大小减少1,并在原始图上重新启动查找团的过程。已经找到的派系影响进一步的搜索,因为尚未显示的(较小的)派系不能是他们的子集。通过检查v的邻居之间的相互关系,可以找到包含给定节点v的大小为s的派系。在我们的算法中,这是通过以下方式实现的:

       (1)首先,构造一个集合A它包含所有相互连接的节点。最初A只由v组成,我们的目标是将这个集合扩大到实际的集团大小s。另一个分离集B也被确定为链接到A中的每个节点的节点集,但不一定链接到B中的节点。最初集合B由v的邻居组成。

        (2)从B转移节点到A(扩大集合A)。这是通过递归的方式完成的,以便检查被传输的节点的每一个可能的组合。(为了避免多次找到同一个派系,节点必须按照索引的递增/递减顺序从B转移到A)。当一个来自B的节点w被放到A中,不是w邻居的节点被从B中移除。(这样做是为了保持B的所有成员都链接到A的每个成员的属性)。如果B在A达到s大小之前就耗尽了节点,或者如果集合A和B的并集可以包含在一个已经找到的(更大的)组中,那么递归将被后退以检查其他可能性。当A的大小达到s时,就会发现一个新的小集团。在记录派系之后,算法将再次后退,以检查相邻索引的剩余可能组合。


 

图解:

对比下图:

代码实现:python实现CPM算法(两种代码)_蓝砂石的博客-CSDN博客

参考文献:

Uncovering the overlapping community structure of complex networks in nature and society

社区发现算法(三)_I am not a quitter.-CSDN博客

CPM(Cluster Percolation method)派系过滤算法_u011089523的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cpm(派系过滤算法)实现社区发现 的相关文章

随机推荐

  • 2000-2018年各省能源消费和碳排放数据数据、1997-2017年各省地级市县区碳排放数、各国二氧化碳排放量(人均公吨数)1960-2014年、二氧化碳排放量、各省市碳排放权额分配实施方案

    1 2000 2018年各省能源消费和碳排放数据数据 1 数据来源 中国能源统计年鉴 2 时间跨度 2000 2018年 3 区域范围 全国各省 4 指标说明 指标来源为中国能源统计年鉴 2018年碳排放和能源数据为插值法推算得到 2 19
  • c语言循环结构程序设计实验报告,c语言循环结构程序设计实验报告

    c语言循环结构程序设计实验报告 云南大学数学与统计学实验教学中心实验报告课程名称 程序设计和算法语言 学期 2012 2013 学年下学期 成绩 指导教师 学生姓名 学生学号实验名称 循环结构程序设计实验编号 四 实验日期 实验学时 3学院
  • 在Pycharm中使用HTMLTestRunner不能生成测试报告

    遇到一个问题 在做自动化测试时 使用的编辑工具是Pycharm 语言是python3 selenium3 代码运行没有问题 但是就是执行完毕后没有在对应目录生成测试报告 因为之前使用的是python2 7 selenium2 程序运行是没有
  • 13.网络爬虫—多进程详讲(实战演示)

    网络爬虫 多进程详讲 一 进程的概念 二 创建多进程 三 进程池 四 线程池 五 多进程和多线程的区别 六 实战演示 北京新发地线程池实战 前言 个人简介 以山河作礼 Python领域新星创作者 CSDN实力新星认证 第一篇文章 1 认识网
  • 2020-09-15

    win10截图 win shift s
  • C++类结构规范定义

    后期私有类肯定还会有很多 为了自己和读者方便阅读 在后面的设计中将严格按照制定格式来定义类的变量和函数 pragma once class CClassxxx public CClassBase DECLARE DYNAMIC CClass
  • Flink SQL中时态表

    前言 Flink 1 12正式发布后 带来了很多新的特性 本文重点学习和总结一下Flink 1 11和 Flink1 12中时态表的使用和自己的一个小总结 文章如有问题 请大家留言交流讨论 我会及时改正 本文主要将在Flink1 12中新的
  • 仿今日头条最强顶部导航指示器,支持6种模式

    项目中经常会用到类似今日头条中顶部的导航指示器 我也经常用一个类似的库PagerSlidingTabStrip 但是有时并不能小伙伴们的所有需求 所以我在这个类的基础上就所有能用到的情况做了一个简单的封装 大家知道做一个功能比较简单 但是封
  • PageHelper 分页排序使用记录

    PageHelper 分页使用 PageHelper startPage pageNum pageSize orderBy 其中最后一个参数是数据库字段名称 按传入的字段进行排序 场景 如果有接口参数中有排序字段 则按参数中的排序字段来排序
  • 用MATLAB修改图像大小

    J1 imread frame 1 png 将图片读进工作区 J2 im2double J1 将默认的uinit数据类型保存为double类型并进行单位化 f imresize J2 2 将J2图片尺寸变为原来的二倍 figure imsh
  • 机器学习——逻辑回归 (Logistic Regression)

    引言 当谈到分类问题时 机器学习中最常用的算法之一就是逻辑回归 Logistic Regression 逻辑回归是一种广义线性模型 用于预测二分类问题 它的优势在于简单易懂 计算效率高 并且通常具有不错的性能 在本文中 我们将介绍逻辑回归的
  • 软件测试面试题:什么是上下文切换?

    1 什么是上下文切换 上下文切换是指CPU从一个任务或线程切换到另一个任务或线程时 保存当前任务的上下文信息并加载新任务的上下文信息的过程 上下文信息包括寄存器状态 程序计数器 堆栈指针等 它们共同组成了一个任务或线程的运行状态 同时 我也
  • 基于深度学习的人脸检测与识别系统设计(python)

    代码在github上 https github com Bluenessdrops face recognition 以上 后续有空了再详细写写过程 有问题请留言
  • vivo手机android耗电快怎么解决,vivo手机耗电严重怎么办 如何解决手机耗电严重的问题...

    相信大家对vivo手机都是不陌生的 他也是我们国产智能手机中的一个品牌 使用的用户也非常的多 并且机型也是一代比一代更好 那么大家平时在使用vivo手机的时候可能都会觉得它的电耗太快了 每天没用多久就需要充电了 所以就有网友问到小编有没有解
  • python通讯录课程设计

    最近自学了python 想到之前学c 的通讯录课程设计 就试着用来检验python的学习成果 import os file name contact txt def menu print 欢迎使用通讯簿 print 菜单 print 1 新
  • 【Chips】跨时钟域的亚稳态处理、为什么要打两拍不是打一拍、为什么打两拍能有效?

    Title 跨时钟域的亚稳态处理 为什么要打两拍不是打一拍 为什么打两拍能有效 前言 个人颜色习惯 黑色加粗 突出显示 红色 重要 洋红色 产生的疑问 question 蓝色 个人思考 或 针对问题的Solution 1 个人疑惑 在学习
  • Spring中原型prototype的准确使用

    实际问题 项目中 报表导出涉及到了在同一个类的两个不同方法中 都有相同的查询数据库的操作 一个方法是用于获取内容 一个是用于获取条数的 大概类似于这样 code class language java hljs has numbering
  • CVPR 2022

    论文 https arxiv org abs 2112 10003 代码 https github com timojl clipseg 语雀文档 https www yuque com lart papers ma3gkwbb5ud1ew
  • 苹果手机如何打开开发者模式

    下载爱思助手 数据线连接苹果手机 点击虚拟定位 修改虚拟定位 打开开发者模式 6 根据提示前往 iPhone 设置 隐私与安全性 可发现 开发者模式 现在已经显示出来 请打开开关并重启设备 7 设备完成重启后 屏幕上会出现询问是否打开 开发
  • cpm(派系过滤算法)实现社区发现

    注意 1 派系过滤CPM方法 clique percolation method 用于发现重叠社区 派系 clique 是任意两点都相连的顶点的集合 即完全子图 2 所有彼此连通的k 派系构成的集合就是一个k 派系社区 其中一个k 派系与另