复杂网络笔记-R语言

article/2025/9/17 10:12:21

最近学习了下复杂网络相关的东西,总结了部分基础的理论,与使用R语言igraph包,总结如下,还需要继续深入,目前只学了皮毛。

复杂网络的复杂性

1、结构复杂性
网络连接结构看上去错综复杂,网络连接结构可能是随时变化的,节点间连接可能具有不同的权重和方向。
2、节点复杂性
网络中节点可能是是具有分岔和混沌等复杂性行为的动力系统。且可能存在多种不同类型的节点,且又随时间进行演化。
3、各种复杂性因素的相互影响
实际的复杂网络会手法哦各种各样的影响和作用。此外,各种网络之间也存在密切的联系会加大分析难度。

主要研究内容

目前而言,复杂网络理论的主要研究内容可以归纳为:
1、发现:揭示刻画网络系统结构的统计性质,以及度量这些性质的合适方法;
2、建模:建立合适的网络模型以帮助人们理解这些统计性质的以及产生机理;
3、分析:基于单个节点的特性和整个网络的结构性质分析与预测网络的行为;
4、控制:提出改善已有网络性能和设计新的网络的有效方法,特别是稳定性、同步和数据流通方面。

复杂网络的基本概念

常用表达:D网络直径;N点数;M边数
1、平均路径长度,也称网络的特征路径长度,其中dij表示节点间距离,N为点数;
这里写图片描述
2、聚类系数;
这里写图片描述
整个网络的聚类系数C就是所有节点i的聚类系数的平均值(0-1区间)。
3、度分布;
度即为该节点连接其他节点的数目,一般用ki表示。有向网络中节点的度分为出度和入度,出度即该节点只想其他节点的数目,入度即其他节点指向该节点的数据。直观上看,一个节点的度越大意味着这个节点在某种意义上越重要。所有节点的度的平均值成为网络的平均度,记作网络中的节点的度的分布情况可硬分布函数P(k)来描述,表示一个随机选定的节点的度恰好为k的概率。
度的分布一般有两种形式:Poisson分布,对应均匀网络;以及幂律分布,也称无标度分布,对应无标度网络这里写图片描述,幂律分布曲线比Poisson指数分布曲线下降要缓慢的多;
这里写图片描述
一个度分布具有适当的幂指数的幂律形式的大规模无标度网络中,绝大部分的节点的度相对很低,但存在少量的度相对很高的节点为非均匀网络,而那些度相对很高的节点称为网络的集线器。
无标度网络与随机网络对比,便于理解区分,参考下图:
这里写图片描述
累计度分布函数:表示度数据的一种方法;
这里写图片描述
这里写图片描述

实际网络统计性质

测量性质:
1、有向或无向;
2、节点总数N;
3、边的总数M(是否考虑重边);
4、平均度数;
5、平均路径长度;
6、聚类系数;
7、若符合幂律,则给出幂指数r(有向网络,则需分别给出入度指数和出度指数);

网络拓扑基本模型及性质

  • 规则网络
    1、全局耦合网络:任意两个点之间都直接相连,在所有相同节点数的网络中,具有最小平均路径长度和最大聚类系数,但不适用实际中。
    2、最近邻耦合网络:每一个节点只和。它周围的邻居节点相连。对于较大的K值,最近邻耦合网络的聚类系数为
    这里写图片描述
    这样的网络是高度聚类的,其不属于小世界网络。
    3、星形耦合网络:只有一个中心点,其余的N-1个点都只与这个中心点连接,而他们彼此间不连接。
    这里写图片描述
  • 随机图
    典型案例:ER随机图:对于给定概率下,要么每个图都具有某个性质,要么几乎每个图都不具备该性质;ER随机图中两个节点之间无论是否具有共同的邻居节点,其连接概率均为p,大规模的稀疏ER随机图没有聚类特性。
  • 小世界网络模型
    既具有较短的平均路径长度,又具有较高的聚类系数的网络称为小世界网络。
    这里写图片描述
    这里写图片描述
    这里写图片描述
    1、聚类系数
    这里写图片描述
    2、平均路径长度
    这里写图片描述
    3、度分布
    这里写图片描述
    小波分析
    这里写图片描述
  • 无标度网络模型
    1、BA无标度网络
    无标度网络特点:连接度的分布函数具有幂律形式,网络节点的连接度没有明显的特征长度;
    考虑到实际网络中两个重要特性:
    增长特性:网络的规模是不断扩大的。
    优先连接:新的节点更倾向于与那些具有较高连接度的大节点相连接。
    BA无标度模型很好的体现了科学研究中的从复杂现象提取简单本质的特点.BA模型只能生成度分布幂律指数固定为3的无标度网络,而各种实际复杂网络的墨绿指数则不甚相同,且大都属于2至3的范围内。
    这里写图片描述
    平均路径长度&聚类系数&度分布
    这里写图片描述
    鲁棒性与脆弱性
    如果在一走少量节点后的网络中的绝大部分节点仍是连通的,那么就称该网络的连通性对节点故障具有鲁棒性。
    适用度模型
    这里写图片描述
    局域世界演化模型构造算法
    这里写图片描述

子图与模体:子图描绘了从局部层次刻画一个给定网络的相互连接的特定模式。复杂网络中可能包含各种各样的子图,如三角形、正方体和五角形等,其中的一些子图所占的比例明显高于统一网络的完全随机化形式中这些子图所占的比例。这些子图就成为模体。
等级网络
实际系统中可能同时存在模块性、局部聚类、无标度拓扑特性,这时需要假设模块以某种迭代的方式生成了一个等级网络。
典型例子如下图,利用模块生成等级网络:
这里写图片描述
等级网络模型恰好将无标度拓扑与内在的模块结构集成起来,等级模块性的一个最重要的量化标志是节点聚类系数服从幂律这里写图片描述这表明度很小的节点具有高的聚类系数且属于高度连接的小模块
超家族
复杂网络的自相似性


未完待续。。。。


R语言相关操作

复杂网络关于R部分将目前自己整理了解的部分归纳一下。
从前面复杂网络部分的理论知识,知道复杂网络的基本统计性质有六点以了解网络概况:平均路径长度、聚类系数、度分布、有向或无向、节点总数N、边的总数M。利用igraph包来获取这些性质以及一些说明节点及边重要性指标例如点度中心度、接近中心度、中间中心度、特征向量中心度,可参考这个博客,这些指标在社交网络、推荐算法以及其他一些实际应用中均有一定作用,目前在这些模块还未有深入研究,只是大致了解了下,就不多写了。

实际操作:
1、随机网络和无标度网络,我们已经知道随机网络服从possion分布,无标度网络服从幂律分布,从下面可以具体看一下,随机网络度分布图。

library(igraph)
library(plyr)g<-erdos.renyi.game(100,0.4,directed=T)#生成ER随机图表
degree<-degree(g,mode="all",normalized=T)#mode=in点入度;out=点出度;total点度中心度,三者统称绝对点中心度,相对点中心度=绝对点中心度/最大度数
plot(table(degree),type="h")#绘制直方图

随机网络度分布

2、相关指标计算

g<-erdos.renyi.game(100,0.4,directed=T)#生成ER随机图表
m<-gsize(g)#获取边数
n<-vcount(g)#获取顶点数
l<-mean_distance(g)##计算平均路径长度
c<-transitivity(g)#计算聚类系数
degree<-degree(g,mode="all",normalized=T)#mode=in点入度;out=点出度;total点度中心度,三者统称绝对点中心度,相对点中心度=绝对点中心度/最大度数
table(degree)#度统计
plot(table(degree),type="h")#绘制直方图
degree.distribution(g)#查看度分布
closeness(g,mode="in")##计算接近中心度,点与其他点距离之和的倒数
order(closeness(g,mode="in"))#排序
betweenness(g,normalized=T)#查看点的中间中心度,代表最短距离是否经过该点
edge.betweenness(g)#查看线的中间中心度
evcent(g,scale = F)$vector#计算点的特征向量中心度
page.rank(g)$vector#计算邻接矩阵,计算点的特征向量中心度

3、复杂网络数据导出

g<-erdos.renyi.game(100,0.4,directed=T)#生成ER随机图表
data_m<-as_data_frame(g, what="edges")##获取边数据
data_m2<-as_adjacency_matrix(g)##数据转化为邻接矩阵
g2<-graph_from_data_frame(data_m, directed =F, vertices = NULL)##基于边数据转化网络图
plot(g2,layout=layout.grid)#以图形展示
g3<-graph.adjacency(data_m2,mode="undirected")##基于邻接矩阵数据转化网络图
plot(g3,layout=layout.grid)

4、复杂网络图形设置

##无障碍##
g1<-graph.lattice(c(6,6,1),directed=T,mutual = T)#生成一个6*6的矩阵
V(g1)$name<-c(11,12,13,14,15,16,21,22,23,24,25,26,31,32,33,34,35,36,41,42,43,44,45,46,51,52,53,54,55,56,61,62,63,64,65,66)#设置顶点名称
V(g1)$color<-"pink"#设置顶点颜色
V(g1)$size<-12#设置顶点大小
pa<-get.all.shortest.paths(g1,which(V(g1)$name==11),which(V(g1)$name==66))$res[[1]]##最短路径算法
V(g1)[pa]$color<-"green"
#E(g1)$color<-"grey"
E(g1,path=pa)$color<-"red"#设置边颜色
plot(g1,layout=layout.grid)##随机生成一个图
random<-erdos.renyi.game(50,0.2,directed=T)
#gnm<-sample_gnm(10,20,directed = F)#基于gnm生成图
#gnp<-sample_gnp(10,0.3,directed = F)#基于gnp生成图
V(random)$color<-"pink"#设置顶点颜色
V(random)$size<-10#设置顶点大小
E(random)$color<-"grey"#设置边颜色
pa<-get.all.shortest.paths(random,1,20)$res[[1]]##最短路径算法
E(random,path=pa)$color<-"red"#设置路径边的颜色
plot(random,layout=layout.fruchterman.reingold)

6*6矩阵,指定点到点的最短路径算法结果如下图:
这里写图片描述
随机生成网络图,指定点到点的最短路径算法结果如下图:
这里写图片描述


http://chatgpt.dhexx.cn/article/7lOfiy5Z.shtml

相关文章

R语言神经网络

R语言中已经有许多用于神经网络的package。例如nnet、AMORE以及neuralnet&#xff0c;nnet提供了最常见的前馈反向传播神经网络算法。 AMORE包则更进一步提供了更为丰富的控制参数&#xff0c;并可以增加多个隐藏层。 neuralnet包的改进在于提供了弹性反向传播算法和更多的激…

如何用 R 绘制交互式社会网络图?

挖掘社会关系网络&#xff0c;助你洞若观火。 需求 最近有个学生问我&#xff0c;如何绘制交互式社会网络图&#xff08;Interactive Social Network Graph&#xff09;&#xff1f; 之所以一定要交互式&#xff0c;是因为他的应用场景&#xff0c;是演示给客户。 他解释说&…

R语言如何绘制相互作用网络图(27)

1.什么是相互作用网络图&#xff1f; 生物网络是复杂网络&#xff0c;也是以系统科学的思想研究生命科学的桥梁。网络中的节点可以是蛋白质&#xff0c;基因&#xff0c;RNA或DNA等&#xff0c;网络的边对应节点之间的物理、生化或功能上的相互作用。生物分子之间的相互作用并…

R语言网络分析2:graph函数和应用

产生网络 自定义 BioC 中用得最多的网络类型可能是 graphNEL 类。使用 graphNEL 类的同名函数可以产生自定义网络&#xff1a; library(graph)str(graphNEL) #> function (nodes character(), edgeL list(), edgemode "undirected") nds <- letters[1:3]…

在R语言中轻松创建关联网络

数据 ## Ozone Solar.R Wind Temp Month Day ## 1 41 190 7.4 67 5 1 ## 2 36 118 8.0 72 5 2 ## 3 12 149 12.6 74 5 3 ## 4 18 313 11.5 62 5 4 ## 5 NA NA 14.3 56 5 5 ## 6 28 …

(转载)攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow)

堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的。了解堆栈溢出之前&#xff0c;先了解以下几个概念&#xff1a; 缓冲区 简单说来是一块连续的计算机内存区域&#xff0c;可以保存相同数据类型的多个实例。 堆栈 堆 栈是一个在计算机科学中经常使用的抽象数据类型…

关于内核堆溢出漏洞的分析

一、漏洞背景 CVE-2021-22555是一个存在了15年之久的内核堆溢出漏洞&#xff0c;它位于内核的Netfilter组件中&#xff0c;这个组件可以被用来实现防火墙、NAT等功能。 该漏洞在2006年由commit 9fa492cdc160cd27ce1046cb36f47d3b2b1efa21引入&#xff0c;并在2021年由commit …

Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞

漏洞名称&#xff1a;Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞CNNVD编号&#xff1a;CNNVD-201311-423发布时间&#xff1a;2013-11-29更新时间&#xff1a;2013-11-29危害等级&#xff1a;中危 漏洞类型&#xff1a;缓冲区溢出威胁类型&#xff1a;本地CVE编号…

hackthebox-buff(gym渗透 端口转发 cloudme 缓冲区溢出 )

1、扫描 masscan快速全局扫&#xff0c;nmap具体扫。7680不知道&#xff0c;8080是web进去搜集信息。 C:\root> masscan -p1-65535,U:1-65535 10.10.10.198 --rate1000 -e tun0Starting masscan 1.0.5 (http://bit.ly/14GZzcT) at 2021-01-17 09:36:41 GMT-- forced optio…

20181018栈溢出

所有内容参考书籍《0day安全&#xff1a;软件漏洞分析技术&#xff08;第二版&#xff09;》 缓冲区溢出 简单来说&#xff0c;缓冲区艺术就是在大缓冲区中的数据向小缓冲区复制的过程中&#xff0c;由于没注意小缓冲区的边界&#xff0c;“撑爆”了较小的缓冲区&#xff0c;…

再谈关于缓冲器溢出

废话少说(说一句废话,这是入门级的) C/C的代码: // buffer overflow code by ctorenshenguo.com #include <windows.h>#include <stdio.h>void fnHack() //the host never expect to run this{ printf("Your computer has been hacked!\n"); //ex…

Go内存溢出与内存泄露

https://www.cnblogs.com/sunsky303/p/11077030.html 一、内存泄露与内存溢出的区别 内存溢出(out of memory&#xff0c;简称OOM) 内存溢出是指程序在申请内存时&#xff0c;没有足够的内存空间供其使用&#xff0c;简单点说就是你要求分配的内存超出了系统能给你的&#…

(原创)攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow)

堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的。了解堆栈溢出之前&#xff0c;先了解以下几个概念&#xff1a; 缓冲区 简单说来是一块连续的计算机内存区域&#xff0c;可以保存相同数据类型的多个实例。堆栈 堆 栈是一个在计算机科学中经常使用的抽象数据类型。…

攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow) [zt]

堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的。了解堆栈溢出之前&#xff0c;先了解以下几个概念&#xff1a; 缓冲区 简单说来是一块连续的计算机内存区域&#xff0c;可以保存相同数据类型的多个实例。 堆栈 堆 栈是一个在计算机科学中经常使用的抽象数据类型…

linux 远程溢出,Linux Kernel蓝牙CAPI报文远程溢出漏洞

Linux Kernel是开放源码操作系统Linux所使用的内核。 Linux Kernel对入站CAPI消息没有执行正确的处理&#xff0c;远程攻击者可能利用此漏洞在服务器上执行任意指令。 Linux Kernel代码的net/bluetooth/cmtp/capi.c文件中没有正确地处理入站的CAPI消息。如果用户发送了特制的CA…

linux远程溢出,linux-ftpd-ssl 远程溢出漏洞

linux-ftpd-ssl 远程溢出漏洞 2005-11-15 eNet&Ciweek 详细描述&#xff1a; linux-ftpd-ssl是一款支持加密的FTP server。 linux-ftpd-ssl软件包中存在远程溢出漏洞&#xff0c;恶意服务器可能利用此漏洞在主机上执行任意指令。 恶意服务器生成的超长响应命令可能会覆盖栈…

html溢出攻击,溢出(漏洞)攻击的实现及防御

前言 媒体上关于系统漏洞的话题一直不断&#xff0c;在我所接触的用一些朋友和用户中虽然也知道打系统补丁很重要&#xff0c;但却又一直不以为然总以为网络上的危险离自己很远&#xff0c;大部份人都认为进行一次远程攻击很困难甚至认为只要安装了防病毒软件就一切大吉&#x…

缓冲区溢出(Buffer Overflow)

堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的。了解堆栈溢出之前&#xff0c;先了解以下几个概念&#xff1a; 缓冲区 简单说来是一块连续的计算机内存区域&#xff0c;可以保存相同数据类型的多个实例。堆栈 堆 栈是一个在计算机科学中经常使用的抽象数据类型…

永恒之蓝漏洞复现(Windows server 2008系列缓冲区溢出漏洞)

漏洞信息 漏洞名称&#xff1a;Windows server 2008系列缓冲区溢出漏洞 CVEID&#xff1a;2017-0144 漏洞类型&#xff1a;输入验证错误 威胁类型&#xff1a;远程 发布时间&#xff1a;2017-03-14 危害等级&#xff1a;高危 漏洞简介 Microsoft服务器消息块1.0&#xff08;…

攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow)

堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的。了解堆栈溢出之前&#xff0c;先了解以下几个概念&#xff1a; 缓冲区 简单说来是一块连续的计算机内存区域&#xff0c;可以保存相同数据类型的多个实例。堆栈 堆 栈是一个在计算机科学中经常使用的抽象数据类型…