精华内容
下载资源
问答
  • 多层复杂网络
    千次阅读
    2021-04-20 05:57:39

    

    function [C,aver_C,max_C,min_C]=Clustering(A)

    %%求聚类系数

    %A--------------邻接矩阵

    %C--------------聚类系数

    %aver_C---------整个网络图的平均聚类系数

    A=xlsread('name.xls');

    %A=xlsread('hometown.xls');

    %A=xlsread('dialect.xls');

    N=size(A,2);

    C=zeros(1,N);

    for i=1:N

    a=find(A(i,:)==1); %寻找子图的邻居节点

    b=find(A(:,i)==1);

    m=union(a,b');

    k=length(m);

    if k==1

    disp(['第',int2str(i),'个节点只有一个邻居节点,其聚类系数为0']);

    C(i)=0;

    else

    B=A(m,m);

    C(i)=length(find(B==1))/(k*(k-1));

    end

    end

    aver_C=mean(C);

    max_C=max(C);

    n=find(C==0);

    a=C;

    a(n)=inf;

    min_C=min(a);

    figure;

    bar([1:N],C);

    xlabel('学生节点编号');

    ylabel('各节点的聚类系数K');

    title('knowing someone name节点的聚类系数分布图');

    //求点的聚类系数

    %计算图的core

    function cores=coreness(graphmat)

    graphmat=xlsread('name.xls');

    n=size(graphmat,1);

    deg=zeros(1,n);

    ndin=zeros(1,n);

    ndout=zeros(1,n);

    %for i=1:N

    %   ndin(i)=sum(A(:i));

    %  ndout(i)=sum(A(i:));

    %end

    ndin=sum(graphmat);  %节点的入度

    ndout=sum(graphmat');%节点的出度

    deg=ndin+ndout;

    [incdeg,nodeind]=sort(deg);  %节点的度数从小到大排列(incdeg),以及记录初始位置

    vert=[incdeg;nodeind]; %将二者存到矩阵里

    for i=1:n

    k=1;

    for j=1:n

    if graphmat(i,j)

    neighbour{i}(k)=j;%找出节点i的所有邻居点,并且记录neighbour中,第J各节点的度为K

    k=k+1;

    end

    end

    end

    if deg(n)==0

    neighbour{n}=[];

    end

    if prod(deg)==0

    j=0;

    for i=1:n

    if deg(i)==0

    j=j+1;

    N(j)=i;%删除孤立节点

    end

    end

    j=size(N,2);

    for t=1:j

    vert(:,t)=[];

    end

    end

    m=size(vert,2);

    for i=1:m

    cores(vert(2,1))=vert(1,1)-1;

    for j=1:size(neighbour{vert(2,1)},2)

    if deg(neighbour{vert(2,1)}(j))>vert(1,1)

    deg(neighbour{vert(2,1)}(j))=deg(neighbour{vert(2,1)}(j))-1;

    end

    end

    vert(:,1)=[];

    for k=1:(m-i)

    vert(1,k)=deg(vert(2,k));

    end

    vert=sortrows(vert')';

    end

    for i=1:n

    if deg(i)==0

    cores(i)=0;

    end

    end

    figure;

    bar([1:n],cores);

    xlabel('学生节点编号');

    ylabel('各节点的coreness');

    title('knowing someone name 节点的coreness分布图');

    //求点的core

    其他的网上资源较多就不上传了

    更多相关内容
  • 介绍了一种多层网络的传播模型,里面包含相关代码和数据集。
  • 大数据时代多层复杂网络理论的网络科学研究.docx
  • 大数据时代多层复杂网络理论的网络科学研究.doc
  • 多层/多重/复杂网络的模型 它仍在进行中,因此请当心更新,因为您的代码可能会中断。 要可视化多层网络,请查看 。 该模块实现此处提出的多层网络框架: Kivelä等。 2014。多层网络。 复杂网络杂志(2014)2,...
  • matlab分时代码多层网络 在这里,您将找到一些我用于时变多层网络分析的代码示例,这些示例正在基于一组语言范式同时收集的一组EEG和fMRI数据上运行。 这些代码是与模态无关的,因此您可以在构建它们后将它们应用于...
  • 这是基于 Von Neumann 熵和图的 Quantum Jensen-Shannon 散度的多层网络结构约简算法的 Python 实现,解释如下: M. 德多梅尼科。 V. Nicosia、A. Arenas、V. Latora “多层网络的结构可还原性”,Na
  • 复杂网络与大数据》第二章:复杂网络模型的学习笔记 目录 1动态演化网络 1.1以网络演化的部件划分 1.2以是否考虑权重划分 1.3以演化网络采用的演化机制划分 1.4以演化网络是否动态变化划分 2社区网络 2.1...

    《复杂网络与大数据》第二章:复杂网络模型的学习笔记

    目录

    1动态演化网络

    1.1以网络演化的部件划分

    1.2以是否考虑权重划分

    1.3以演化网络采用的演化机制划分

    1.4以演化网络是否动态变化划分

    2社区网络

    2.1复杂网络中社区结构的分类

    2.2社区结构评价标准

    3权重网络

    3.1加权网络的度量

    3.2实际加权网络

    3.3加权网络建模

    4相依网络

    4.1相依网络的子网络

    4.2相依网络的相依边

    4.3相依网络的组合方式

     


    1动态演化网络

    演化网络是随着时间的变化而变化的网络。

    1.1以网络演化的部件划分

    1.基于点边的网络演化模型:顾名思义,基于点边的网络演化模型就是指在网络演化过程中网络的结点和边都可以增加或删除的演化模型。

    典型的如BA模型。BA模型是基于增长和择优连接两个原理提出的,增长原理强调了网络节点的演化,择优连接强调了网络边的演化。BA模型具有幂律度分布的特性

    目前大多数的网络演化模型都是基于点边的网络演化模型。

    2.基于边的网络演化模型:即网络演化过程中,节点数不变,但是边可以增加或删除的演化模型。

    例如:ER模型在给定的节点之间采用随机连边策略产生随机图模型;WS模型在给定的节点之间采用边重连的策略产生小世界网络模型;NW模型给定的节点之间采用随机加边的策略产生小世界模型;

    两种网络演化模型谁更合理目前并没有定论。

    1.2以是否考虑权重划分

    1.无权网络演化模型:如果对所研究网络的边没有赋予相应的权值,则该网络就称为无权网络。基本的ER模型、WS小世界模型、NW小世界模型以及BA模型都属于无权网络演化模型。目前基于BA模型产生了大量的无权网络演化模型。根据BA模型的网络增长和择优连接两条规则,这些模型大体可以分为两类:修改增长规则的无权网络演化模型和修改连接规则的无权网络演化模型。

    无权网络演化模型主要针对网络的拓扑演化机制进行研究,不考虑网络的功能、承载业务等,演化结论主要也是通过对网络拓扑结构的评判(是否具有幂律度分布特性、小世界效应等)验证。因此,无权网络演化模型与实际网络演化还有一定差距。

    2.含权网络演化模型:如果对所研究网络的边赋予了相应的权值,则该网络就称为含权网络或加权网络。现实世界的网络几乎都是含权网络。含权网络演化模型的研究对理解真实网络的演化过程具有重要意义。具有代表性的含权网络模型有DW模型, YJ BT模型 , Barrat、Barthelemy和Vespignani提出的简单加权演化网络模型(BBV模型) 以及中国科技大学复杂系统研究小组提出的TDE模型及其改进模型。

    含权网络演化模型认为网络承载的业务与网络拓扑结构是一种共生演化关系,相互驱动。BBV模型(特别是TDE模型) 通过将网络业务耦合人网络拓扑演化过程, 不仅得到网络的幂律度分布,同时得到网络强度的幂律分布、网络权重的幂律分布以及高聚集性和非相称混合性等特征,更加成功地刻画出真实技术网络的特性。

    1.3以演化网络采用的演化机制划分

    1.单一演化机制模型:指演化过程中只采取一种演化机制的模型。ER模型、WS小世界模型、NW小世界模型、BA模型以及众多基于这些模型的改进模型都是单一演化模型。单一演化机制模型能有效研究某一演化机制对网络演化性质的影响,但对处于复杂多变环境中的真实网络而言,采用单一演化机制模型往往太过理想化,因此单一演化机制模型与实际网络相比还存在一定的差距。

    2.混合演化机制模型:混合演化机制模型是指网络在演化过程中采取多种演化机制的模型。为了描述确定性与随机性和谐统一的世界以及增长过程的复杂性和多样性,中国原子能科学研究院网络科学小组的方锦清等人提出并发展了统一的混合网络模型,形成网络理论模型的三部曲。数值模拟和理论分析揭示了统一混合网络演化模型随多个混合比变化的若干特性,将其应用于一些现有的无权和含权复杂网络演化模型,可以得到更接近实际网络的特性。虽然混合演化机制模型能描述网络增长过程的复杂性和多样性,但是真实网络究竟采用了哪些演化机制以及各种演化机制所占比重的确定仍是一个需要解决的难题。

    1.4以演化网络是否动态变化划分

    1.静态网络演化模型:在相邻两个时间步内,网络节点及节点之间的关系一直保持不变,则称这类网络为静态网络。目前研究的网络演化模型基本上都属于此类型。

    2.动态网络演化模型:在相邻两个时间步内,网络节点及节点之间的关系(边)具有可变性,则称这类网络为动态网络。动态网络系统中,节点的状态和拓扑都是动态演化的,节点的状态和网络的拓扑之间可能是相互影响的,且系统在整体层面上会展示出各种各样的集体行为。当前的研究重点主要是系统具有什么样的集体动力学行为、如何干预或控制此系统等。

    2社区网络

    目前,社区还没有明确的定义。一般而言,社区是指网络中具有相似属性的节点集合,社区内部关系紧密,社区之间节点关系稀疏。Fortunato从网络节点相似度,局部和全局3个角度总结了常见的社区的定义。

    1. 节点相似度定义:社区是由网络中相似节点构成的集合。同一个社区中的节点在异构的网络中呈现相似的特征,所以可以根据节点的相似度划分社区。通常采用层次聚类方法度量节点相似度和发现社区结构。
    2. 局部定义:社区是与网络中其他部分只有少量关联的部分。即社区内部个体关系紧密。
    3. 全局定义:社区是整个网络系统的一种划分,整个网络构成一棵层次树状图,根据某种特征函数值进行划分,得到最优的社区结构。这种特征函数也就是一种社区划分的衡量标准,对社区结构给出了一种量化定义。最常见的特征医数是 Newman 等人提出的模块度函数。

    综合以上3中定义可以看出,节点相似度是利用节点属性对网络进行划分,社会网络分析领域经常采用这种定义。然而,在复杂网络中,由于节点的属性非常复杂,很难获得有效的信息,因此大多数复杂的网络社区都使用后两种定义,利用网络拓扑来发现社区结构。

    2.1复杂网络中社区结构的分类

    在复杂网络中,有两种类型的社团结构:层次结构和重叠结构,它们可能同时存在于复杂网络中。
    1.层次结构

    社区层次结构是对社会网络中不同层次、不同粒度社区的整合。现实世界中的大多数网络系统都显示出层次的形态。真实网络通常由社区组成,而这样的社区中包含较小的社区,小社区中可能包含更小的社区等。社区层次结构的意义在于揭示复杂网络中社区之间的上下包含关系。层次结构在社会网络中普遍存在,如篮球和羽毛球俱乐部都属于球类俱乐部,围棋和象棋俱乐部都属于棋牌俱乐部,而球类和棋牌类俱乐部都属于体育俱乐部。发现网络社区层次结构,可以深人理解不同尺度下网络结构及网络结构之间的关系,从而更好地反映真实系统的情况,有利于进行系统分析。目前发现社区层次结构较多采用层次聚类的方法,按照网络图中节点之间的距离或者相似度进行聚类,将整个网络结构构建成为一棵树状图。树状图表示了网络社区的层次结构,如图所示,每个节点是树状图中的叶子,然后通过连接构成树状图,组成一个完整的网络。树状图中的每一层代表不同的社区,从底层到高层社区数量越来越少,社区规模越来越大。


    2.重叠结构


    研究发现,现实世界中许多网络社区之间通常并不是彼此独立的,而是相互关联的。换言之,网络由相互关联,彼此重叠的社区组成,社区之间存在重叠的节点。社区的重叠结构是指社区中每个节点并非只属于一个独立的社区,而是存在某些节点可能属于多个社区。例如,在社会网络中,根据不同的分类方法,每个人可能会划分到多个不同的社区(如家庭、公司、兴趣小组、学校等):在科学家合作网络中,一个物理学家同时也可能是一个数学家,因此他将同时处于分别由物理学家和数学家构成的两个社区中。社区重叠结构更加符合真实世界的社区之间的关系,反映了更加真实的网络结构。复杂网络中层次重重社区如图所示,从图中可以发现某些节点在不同的社区之间起着桥梁的作用,同时属于两个不同的社区。

    2.2社区结构评价标准

    采用层次聚类算法是针对已知社区数目(层次)的网络,你需要先构成网络的层次树状图,每一层对应网络的一个划分。但是实际中网络的社区数目往往是未知的。

    如何从树状图中获得最优的社区划分,需要一个度量标准。这里介绍一个划分标准——模块度

    所谓模块性,是指在  一个真实社团内部的节点的边在该网络中所占的比例期望值  与   在保持该网络节点社团属性不变的情况下,边根据节点的度随机链接时,社团内部节点的边占该网络全部边的比例期望值   的比值。社团结构划分的越好,该比值越大。通常用Q函数定量描述社团划分的模块水平:

    Q=(一个真实社团内部的节点的边在该网络中所占的比例期望值)/( 在保持该网络节点社团属性不变的情况下,边根据节点的度随机链接时,社团内部节点的边占该网络全部边的比例期望值)

    其中,m为边数,ki,kj为节点vi,vj的度,它们中间有边的可能性为(ki*kj)/2m,若有边Aij=1,否则等于0。ci,cj分别是vi,vj所属的社区,当ci=cj时δ(ci,cj)=1,否则等于0。

    Q值范围【-0.5,1),值越大,社区划分越准确。在实际中,Q值最高点一般在0.3~0.7之间.

    3权重网络

    权重网络就是带权重的网络。之前只讨论边是否存在的二进制网络只是纯粹的拓扑模型,不足以解释实际系统观察中的丰富而复杂的性质。

    3.1加权网络的度量

    加权图一般表示为G=(V,E,W)。首要特征是权分布Q(w),即特定边的权为w的概率。

    下面介绍的度量是无权网络中一些概念的拓展与补充,并将权与拓扑相结合。

    1.点的强度,强度分布与相关性

    强度是度概念的推广:由边的个数推广为边权的和。

    s_{i}=\sum_{j\in N_{i}} w_{ij}

    当权与拓扑结构无关时,度数为k的点的强度S(k)约等于<w>*k,<w>为平均强度。

    点vi的边权可能均匀分布,也可能只有少数权占优势。权的不等性由Y_{i}度量,它的定义为
    Y_i=\sum _{j \in N_i }(\frac{w_{ij}}{S_i})^2 

    即每条边权占强度比值的平方和。如果边的权值都差不多,则Y(k)=1/k,若只有一条边起主要作用,则Y(k)=1。

    强度分布R(S)度量了点强度为S的概率,和度分布P(K)一起构成了加权网络的有用信息。点vi的最近邻度数的加权平均为:

    k^w_{nn,i}=\frac{1}{S}\sum_{j\in N_i} a_{ij}\omega _{ij}k_j

    这个量可以刻画加权网络的同类匹配性和非同类匹配性。当k^w_{nn,i}>k_{nn,i}时,权值大的点倾向于链接度大的点,否则相反。

    2.加权最短路径

    有些情况下边的物理长度是有用的,边的长度L可以定义为vi到vj的欧几里何空间距离。在一般加权网络中,边长可以用权的函数表示,如L=1/wij,尽管此假设不满足三角不等式。加权最短路径可以定义为vi到vj中边长和的最小值,此时最短路径不再是含有最少边的路径。

    3.加权聚集系数

    之前所说的聚集系数没有考虑到加权网络中有些邻居节点比其他点更重要,这里令vi的加权聚集系数定义为:

    C_i^w=\frac{1}{S_i(k_i-1)}\sum_{j,k}\frac{w_ij+w_ik}{2}a_{ij} a_{jk} a_{ki} ,取值【0,1】

    加权聚集系数既考虑了vi的邻居闭三角形个数,又考虑了总相对权。C^wC^w(k)分别表示所有点的加权聚集系数均值和所有k度点的加权聚集系数均值。对于大型随机网络,有C^w=C,C^w(k)=C(k)。然而实际情况却可能看到两种相反的情况,如果C^w>C,则顶点关联三元组更可能由权高的边组成;相反如果C^w<C,则表示网络的拓扑聚集由权低的边形成。​​

    3.2实际加权网络

    不同链接的权展示了不同的分布和幂律行为等复杂统计特征。权和拓扑的相关性为观察这类组织结构提供了互补的视角。

    1.生物网络(以代谢网络为例)

    若以E大肠杆菌的新陈代谢反应作为加权网络研究,节点vi,vj表示代谢物i,j,有向边eij代表代谢物 i 到 j 的反应,权wij代表从代谢物 i 到 j 的流量。

    在最优生长条件下,权分布很好的符合幂律分布:

    Q(w)\propto (w_0+w)^{-r_w},其中w0=0.003,rw=1.5。

    这代表越高的权出现的概率越小,即流量越高的反应出现的概率越小。

    同时在权的不等性方面,我们发现对于E大肠杆菌的代谢,其入度出度都符合

    Y(k)\propto k^{-0.27},即权的不等性与k^{-0.27}成正比。

    在之前2.6.1我们定义权的不等性时我们知道,如果权分布平均,则Y(k)越趋近于1/k。因此在E大肠杆菌代谢网络中,节点的度k越大,其权不等性Y(k)\propto k^{-0.27}与1/k的距离越远。即度越大的节点,权分布越不均匀。即某个代谢物生成或者消耗反应越多,越有可能某个反应携带了大多数的反应物。

    2.社会网络(以合作网为例)

    合作网是目前拥有广泛数据库的社会网络。以无权科学合作网为例,科学家作为端点,如果两位科学家合作过文章,则连一条边。但是合作多的科学家之间明显比合作少的科学家之间联系更紧密,为了解释这一现象,我们需要合作频数来衡量作者间的关系。比如我们可以定义作者i,j之间相互作用的为:

    w_{ij}=\frac{\sum_p \delta_i^p \delta_j^p }{n_p-1},p的定义域为所有的文章,如果作者i是文章p的作者之一,则\delta _i^p=1,否则为0 ,np是文章p的作者数。

    即合作过的文章越多,合作文章的共同作者越少,两位科学家之间的权越大,联系越紧密。

    现在我们根据这种权的定义,来研究一个N=12722的,1995-1998年间给凝聚态物理提交论文草稿的科学家的合作网。实际观察中,该网络具有以下特征:

    1. 该网络的分布R(S)和P(k)都是重尾分布的。
    2. 权与拓扑结构无关,即S(k)=<w>*k,度为k的节点的强度等于平均权乘以度数k。
    3. k>=10时,加权聚集系数C^w(k)>C(k),这意味着顶点关联三元组更可能由权高的边组成,即合作者多的科学家之间趋于相互合作,组成稳定的研究组就能产生大量文章。
    4. 点vi的最近邻度数的加权平均k^w_{nn,i}k_{nn,i}都随着k呈幂律增长,表明该网络呈现了一个社会网络的典型特征,同类匹配性。

    3.技术网络

    以世界航空网为加权网并进行分析。节点vi,vj表示机场i,j,权wij为机场i到机场j的航班的有效座位数。该实际网络展示了小世界和无标度属性。

    1. 特别的,该网络的度分布形势为p(k)=k^{-\gamma }f(k/k_x),其中\gamma=2.0;f(k/k_x)是指数断开函数,因为单个机场能提供的最大数目链接是有限的。
    2. 节点的强度分布R(S)是重尾的,且权与度之间存在非平凡关联:边的平均权和两端点的度数之间的关系为<wij>=(ki*kj)^θ,指数θ=0.5。
    3. 度数为k的点的强度服从幂律分布S(k)=AK^\beta,指数β=1.5,这表明机场越大,可处理的运输量越大。
    4. 在k的整个取值范围内,加权聚集系数C^w(k)有更多有界变化,即度数高的机场易形成具有高运输量的相关组。
    5. 由于高流量链接在网络中枢上,所以有高度数的点趋于和同样具有高度数的点结成派系的现象,即“富人俱乐部”现象。

    3.3加权网络建模

    1.YJBT模型

    YJBT模型是加权无标度网络的最小模型,模型中随着网络增长,拓扑和权都受择优连接规则驱动。

    1. YJBT模型的拓扑结构与BA网络相同。开始于m0个点,每一时步,添加一个具有m<m0条边的新节点vj。点vj与已有的点vi相连的概率为\frac{k_i}{\sum_lk_l},即vi节点的度/全部节点的度
    2. 每条边权为w_{ij}=\frac{k_i}{\sum_ik_i},即vi节点的度/要连接的节点的度之和。可以发现新节点的边权之和为1 。

    YJBT模型产生了无标度网络,度为幂律分布P(k)~k^{-3} ,强度也为幂律分布R(S)=S^{-\gamma _s} ,其中指数\gamma _s强烈依赖于m,渐进的强度分布最终收敛于度分布。

    因为YJBT模型生成过程的演示在网络上没有找到,所以我自己写了一个:https://github.com/changyaoxing/ComplexNetworkModel_YJBT

    2.ZTZH模型

    ZTZH模型是YJBT模型的一般化,在点的度和适应度的权值分配上加入了随机因素。对于每条新建连接l_{ji},以概率p按照YJBT模型的形式w_{ij}=\frac{k_i}{\sum_ik_i}赋予其权值,以概率1-p按照w_{ij}=\frac{\eta _i}{\sum_i\eta _i}的形式赋予权值,其中\eta _i是赋予点vi的适应度参数,服从区间【0,1】上的均匀分布\rho (\eta )。p=1时,模型就还原成了YJBT模型,p=0时,权值完全有适应度决定。模型产生了强度幂律分布R(S)~S^{-r_s},其指数r_s的特征是对概率p高度敏感,r_s从p=0时的值r_s=3随着p的增加而连续递减。和YJBT模型一样,关于P(k)的差异是对数修正项的结果,可以用p调整,当p=0时,差异消失。YJBT模型发现对所有p>0都有r_s依赖m的变化,仅当p=0时,r_s独立于m在一个依赖于点连接和适应度的边形成机制模型中也发现了类似的结果。

    3.AK模型

    AK网络的结构增长与边权相耦合。模型定义如下:

    1. 每一个时间步,加入一个新点vj,连接到一个目标点vi,连接概率与点vi的强度成正比:\prod _{j\rightarrow i}=\frac{S_i}{\sum_l S_l},此规则放宽了\frac{k_i}{\sum_lk_l}的度择优连接规则,考虑强度连接规则。
    2. 对每一条边赋予一个从分布ρ(w)取出的权值。

    所得网络是树,其强度分布R(S)当S趋近于无穷时,逼近静态胖尾分布R(S)~S^(-γ),与边权分布ρ(w)无关。特别的,当ρ(w)为指数分布时,R(S)为所有的代数分布。

    4.BBV模型

    之前的YJBT、ZTZH、AK模型都是基于网络拓扑增长,即产生边的同时为其赋予一个权值,以后就不再变化。这种模型忽略了新节点和边的加入可能引发的权的动态变化,忽略了演化和增进的相互作用是自然的网络的普遍特征。例如,一条新航线的开辟会影响其他航线的流量。

    BBV模型是基于加权驱动动力学和与局域网络增长相结合的权增加机理,这种结合模仿了实际情况中观察到的相互作用的变化。

    1. 模型开始于m0个初始点,连接权为w0;
    2. 每一时间步添加新点vj和m条边,权值是w0。以\prod _{j\rightarrow i}=\frac{S_i}{\sum_l S_l}的概率随机与已有的节点vi连接;
    3. 新边eji的出现引起vi何其邻居vl之间的权的局部调整,按照w_{il}\rightarrow w_{il}+\Delta w_{il}的格式进行。其中\Delta w_{il}=\delta \frac{w_{il}}{S_i},即vi因为新边eji的出现,强度增加了\delta,每条边按权重占强度比例分配\delta
    4. 此时vi的强度变化为S\rightarrow S+w_0+\delta 。

    BBV模型生成的网络展示了权、度和强度分布的幂律行为、指数是非平凡的且与w0和\delta相关。若令w0=1,这时的模型只考虑一个单独参数\delta,即由于添加新边而增加的点的强度。当时间无穷大,即点无穷多时,权分布呈幂律分布Q(w)~w^{-r_w}r_w=2+\frac{1}{\delta }。点的度数分布和强度分布服从于有相同指数r=r_s=\frac{4\delta +3}{2\delta +1}的幂律分布P(k)\propto k^{-r_s}R(S)\propto S^{-r_s}

    5.DM模型

    BBV模型中强度高的点吸引新边,然后修正这些点的边权。DM模型中,权高的边增加权值并吸引新的连接。一种指向强的点,一种指向强的边。DM模型规则如下:

    1. 以权成比例的概率选择一条边,并将其权增加常数δ。
    2. 新点连接到该边的两个端点,并赋予权值1 。

    结果边权、点的度数、点的强度都成幂律分布,指数分别等于r_w=2+\frac{2}{\delta }r=r_s=2+\frac{1}{1+\delta } 。

    4相依网络

    现实中的网络或多或少的都与其他的网络相关联,比如物理依附,信息交换等。2003年的意大利停电事故就是因为电网的某个节点故障,导致其相连的计算机控制节点断电,结构控制网络无法有效调控电网,造成全国性的断电。研究相依网络对设计更健壮的网络系统,提高网络设施抵御风险的能力具有重要意义。

    相依网络有三个要素:相依网络的子网络,相依网络的相依边,相依网络的组合方式。

    4.1相依网络的子网络

    相依网络的鲁棒性受子网络的影响很大。子网对相依网络的鲁棒性的影响主要是靠子网络的类型节点数、平均度等特性。

    子网络的类型可以是ER网络、RR网络、SF网络、BA网络、WS网络等。其他条件相同时,这些网络作为子网组成的相依网络的鲁棒性表现如下:

    RR-RR>ER-ER>SF-ER>SF-SF,这是子网络节点度分布决定的,子网络的度分布越均匀,相依网络的鲁棒性越好。

    网间相似性:子网络内部度数高的节点间倾向于产生相依关联。例如机场网和港口网组成的系统中,令相依关联为地理位置相同,则重要的港口节点倾向于链接重要的机场节点。

    在研究港口-机场的相依网络时发现:网间相似性越高,相依网络在面临随机失效时的鲁棒性越好。即我们可以通过提高度高节点间的相依边的可靠性,增强相依网络的鲁棒性。

    4.2相依网络的相依边

    相依边是相依网络的存在基础,也是影响相依网络鲁棒性的最直接因素。相依边主要通过其方向、类型以及比例等属性影响整个网络的鲁棒性。

    相依边分为有向和无向两种,当其他条件相同时,有向相依边的相依网络鲁棒性较差。因为有向系统可能产生更长的相依链

    相依链指在两个子网A、B组成的相依模型中,A中的节点u支持B的节点v,而v反过来又支持A的节点w,如此循环往复形成的相依节点集。相依链上节点的故障会通过相依链在子网间传播,还可能扩散到与相依链链接的其他节点上,引起故障的级联,降低系统的鲁棒性。

    相依边类型有连接边(connectivity links)和依赖边(dependency links)两种。连接边的作用是连接不同网络的节点,使子网络能够协同工作;依赖边表示某个节点的功能依赖于其他节点。据此可以将相依网络分为三种,即子网络间只存在依赖边/只存在连街边/同时存在连接边和依赖边的相依网络。

    相依网络的相依强度q指的是相依网络中有相依关系的节点所占的比例:q=0表示子网络间无相依关系;q=1表示子网络完全相依,即节点之间具有一一对应的相依关系。当相依强度p由0向1变化时,相依网络的鲁棒性会变差。

    4.3相依网络的组合方式

    随着研究的深入,学者们从子网络规模和组合方式的角度对相依网络进行了拓展,目前研究的重点是网络组成的网络——多层网络(network of network,NON)的鲁棒性。

    目前研究较多的是由ER、RR等网络作为子网络,以链形、星形、树形和环形组合方式组成的NON的性质。

     

    展开全文
  • networkx在02年5月产生,是用python语言编写的软件包,便于用户对复杂网络进行创建、操作和学习。利用networkx可以以标准化和非标准化的数据格式存储网络、生成多种随机网络和经典网络、分析网络结构、建立网络模型...

    什么是networkx?

    networkx在02年5月产生,是用python语言编写的软件包,便于用户对复杂网络进行创建、操作和学习。利用networkx可以以标准化和非标准化的数据格式存储网络、生成多种随机网络和经典网络、分析网络结构、建立网络模型、设计新的网络算法、进行网络绘制等。 ——百度百科

    我们可以用networkx做什么?

    画图

    2. 有向图,无向图,网络图……

    3. 总之各种图

    看到这你是不是心动了呢?今天的教程就是要教会你画出封面上的三层感知机模型图!

    Let’s get started!

    首先导入networkx和matplotlib模块

    import networkx as nx

    import matplotlib.pyplot as plt

    >>> import networkx as nx

    >>> G = nx.Graph() 定义了一个空图

    >>> G.add_node(1) 这个图中增加了1节点

    >>> G.add_node('A') 增加'A'节点

    >>> G.add_nodes_from([2, 3]) 同时加2和3两个节点

    >>> G.add_edges_from([(1,2),(1,3),(2,4),(2,5),(3,6),(4,8),(5,8),(3,7)])

    # 增加这么多条边,在下面有举例

    >>> H = nx.path_graph(10)

    >>> G.add_nodes_from(H)

    >>> G.add_node(H)

    G.add_node('a')#添加点a

    G.add_node(1,1)#用坐标来添加点

    G.add_edge('x','y')#添加边,起点为x,终点为y

    G.add_weight_edges_from([('x','y',1.0)])#第三个输入量为权值

    #也可以

    list = [[('a','b',5.0),('b','c',3.0),('a','c',1.0)]

    G.add_weight_edges_from([(list)])

    我们来看看上面最后一句是什么意思

    import matplotlib.pyplot as plt

    import networkx as nx

    H = nx.path_graph(10)

    G.add_nodes_from(H)

    nx.draw(G, with_labels=True)

    plt.show()

    生成了标号为0到9的十个点!别急,丑是丑了点,一会我们再给他化妆。

    #再举个栗子

    G=nx.Graph()

    #导入所有边,每条边分别用tuple表示

    G.add_edges_from([(1,2),(1,3),(2,4),(2,5),(3,6),(4,8),(5,8),(3,7)])

    nx.draw(G, with_labels=True, edge_color='b', node_color='g', node_size=1000)

    plt.show()

    #plt.savefig('./generated_image.png') 如果你想保存图片,去除这句的注释

    好了,你现在已经知道如何给图添加边和节点了,接下来是构造环:

    画个圈圈

    import matplotlib.pyplot as plt

    import networkx as nx

    # H = nx.path_graph(10)

    # G.add_nodes_from(H)

    G = nx.Graph()

    G.add_cycle([0,1,2,3,4])

    nx.draw(G, with_labels=True)

    plt.show()

    画个五角星

    import networkx as nx

    import matplotlib.pyplot as plt

    #画图!

    G=nx.Graph()

    G.add_node(1)

    G.add_nodes_from([2,3,4,5])

    for i in range(5):

    for j in range(i):

    if (abs(i-j) not in (1,4)):

    G.add_edge(i+1, j+1)

    nx.draw(G,

    with_labels=True, #这个选项让节点有名称

    edge_color='b', # b stands for blue!

    pos=nx.circular_layout(G), # 这个是选项选择点的排列方式,具体可以用 help(nx.drawing.layout) 查看

    # 主要有spring_layout (default), random_layout, circle_layout, shell_layout

    # 这里是环形排布,还有随机排列等其他方式

    node_color='r', # r = red

    node_size=1000, # 节点大小

    width=3, # 边的宽度

    )

    plt.show()

    import random

    G = nx.gnp_random_graph(10,0.3)

    for u,v,d in G.edges(data=True):

    d['weight'] = random.random()

    edges,weights = zip(*nx.get_edge_attributes(G,'weight').items())

    pos = nx.spring_layout(G)

    nx.draw(G, pos, node_color='b', edgelist=edges, edge_color=weights, width=10.0, edge_cmap=plt.cm.Blues)

    # plt.savefig('edges.png')

    plt.show()

    加入权重

    import matplotlib.pyplot as plt

    import networkx as nx

    G = nx.Graph()

    G.add_edge('a', 'b', weight=0.6)

    G.add_edge('a', 'c', weight=0.2)

    G.add_edge('c', 'd', weight=0.1)

    G.add_edge('c', 'e', weight=0.7)

    G.add_edge('c', 'f', weight=0.9)

    G.add_edge('a', 'd', weight=0.3)

    elarge = [(u, v) for (u, v, d) in G.edges(data=True) if d['weight'] > 0.5]

    esmall = [(u, v) for (u, v, d) in G.edges(data=True) if d['weight'] <= 0.5]

    pos = nx.spring_layout(G) # positions for all nodes

    # nodes

    nx.draw_networkx_nodes(G, pos, node_size=700)

    # edges

    nx.draw_networkx_edges(G, pos, edgelist=elarge,

    width=6)

    nx.draw_networkx_edges(G, pos, edgelist=esmall,

    width=6, alpha=0.5, edge_color='b', style='dashed')

    # labels

    nx.draw_networkx_labels(G, pos, font_size=20, font_family='sans-serif')

    plt.axis('off')

    plt.show()

    有向图

    from __future__ import division

    import matplotlib.pyplot as plt

    import networkx as nx

    G = nx.generators.directed.random_k_out_graph(10, 3, 0.5)

    pos = nx.layout.spring_layout(G)

    node_sizes = [3 + 10 * i for i in range(len(G))]

    M = G.number_of_edges()

    edge_colors = range(2, M + 2)

    edge_alphas = [(5 + i) / (M + 4) for i in range(M)]

    nodes = nx.draw_networkx_nodes(G, pos, node_size=node_sizes, node_color='blue')

    edges = nx.draw_networkx_edges(G, pos, node_size=node_sizes, arrowstyle='->',

    arrowsize=10, edge_color=edge_colors,

    edge_cmap=plt.cm.Blues, width=2)

    # set alpha value for each edge

    for i in range(M):

    edges[i].set_alpha(edge_alphas[i])

    ax = plt.gca()

    ax.set_axis_off()

    plt.show()

    颜色渐变的节点

    import matplotlib.pyplot as plt

    import networkx as nx

    G = nx.cycle_graph(24)

    pos = nx.spring_layout(G, iterations=200)

    nx.draw(G, pos, node_color=range(24), node_size=800, cmap=plt.cm.Blues)

    plt.show()

    颜色渐变的边

    import matplotlib.pyplot as plt

    import networkx as nx

    G = nx.star_graph(20)

    pos = nx.spring_layout(G)

    colors = range(20)

    nx.draw(G, pos, node_color='#A0CBE2', edge_color=colors,

    width=4, edge_cmap=plt.cm.Blues, with_labels=False)

    plt.show()

    如何画一个多层感知机?

    import matplotlib.pyplot as plt

    import networkx as nx

    left, right, bottom, top, layer_sizes = .1, .9, .1, .9, [4, 7, 7, 2]

    # 网络离上下左右的距离

    # layter_sizes可以自己调整

    import random

    G = nx.Graph()

    v_spacing = (top - bottom)/float(max(layer_sizes))

    h_spacing = (right - left)/float(len(layer_sizes) - 1)

    node_count = 0

    for i, v in enumerate(layer_sizes):

    layer_top = v_spacing*(v-1)/2. + (top + bottom)/2.

    for j in range(v):

    G.add_node(node_count, pos=(left + i*h_spacing, layer_top - j*v_spacing))

    node_count += 1

    # 这上面的数字调整我想了好半天,汗

    for x, (left_nodes, right_nodes) in enumerate(zip(layer_sizes[:-1], layer_sizes[1:])):

    for i in range(left_nodes):

    for j in range(right_nodes):

    G.add_edge(i+sum(layer_sizes[:x]), j+sum(layer_sizes[:x+1]))

    # 慢慢研究吧

    pos=nx.get_node_attributes(G,'pos')

    # 把每个节点中的位置pos信息导出来

    nx.draw(G, pos,

    node_color=range(node_count),

    with_labels=True,

    node_size=200,

    edge_color=[random.random() for i in range(len(G.edges))],

    width=3,

    cmap=plt.cm.Dark2, # matplotlib的调色板,可以搜搜,很多颜色呢

    edge_cmap=plt.cm.Blues

    )

    plt.show()

    差不多就是这个效果了。

    后续我会封装为一个类,加入动态演示,比如通过颜色深浅,显示神经网络在优化的时候权重变化。应该会很好玩,嘿嘿。

    上面你也可以改变layer_sizes

    比如改为233333

    调皮了

    layter_sizes = [2, 3, 4, 5, 5, 4, 3, ] 贼丑了

    完。

    展开全文
  • 复杂网络分析

    千次阅读 2022-03-17 15:22:12
    复杂网络是研究复杂系统的一种角度和方法,它关注系统中个体相互关联作用的结构,是理解复杂系统性质和功能的一种途径。 例: 技术网络 (www网,因特网,电力网)把网页之间的超链接的相互关系抽象出来,构成了一...

    探索复杂性

    对象:对各个领域的复杂系统,

    方法:利用系统学的方法,

    目标:获得系统规律一般、普适的认识。

    大道至简
     

    重要性:

    当研究复杂系统是必须考虑个体之间的关联和作用;

    复杂网络是研究复杂系统的一种角度和方法,它关注系统中个体相互关联作用的结构,是理解复杂系统性质和功能的一种途径。

    例:

    技术网络 (www网,因特网,电力网)把网页之间的超链接的相互关系抽象出来,构成了一个可是图里面像网的东西。

    社会网络(朋友关系网,演员网,科学家合著网)

    交通运输网(航空网,道路交通网,城市公共交通网)

    生态生物网络(生态网络,基因网络,蛋白质相互作用网络)

    复杂网络图的表示

    结点 连边

    复杂网络的数学描述

    1. 网络G=(V,E),由点集V(G)和边集E(G)组成的一个图,可分为无向、有向和加权网络
    2. 令e 属于E(G),每条边e,有V(G)中的一对点(u,v)与之对应;
        如果任意(u,v)与(v,u)对应同一条边,则称为无向网络,否则为有向网络;
        如果任意「e,l=1,则称为无权网络,否则为加权网络。
    3. 连接矩阵及拉普拉斯矩阵
     

    网络拓扑

    和数学中的拓扑有区别

    网络是一个由多个节点组成的集合,节点之间有一定的连接
    ●例子:
    ◆国际互联网:节点―路由器 连接-光纤
    ◆科学引用网:节点-文章 连接-文章引用
    ◆社会网络:节点-个体人
    连接-人际关系

    网络的拓扑结构——静态几何量及其统计性质

    度(朋友的个数 度分布是泊松分布)、聚集系数(朋友的朋友还是不是朋友的情况)、最短路径、介数(经过我的最短路径的条数)、权、相关性
    网络上的聚类分析

    网络的演化性质和机制模型


    时间演化性质,偏好性的检验
    Small World Network , Scale Free Network-BA模型


    网络的结构与功能


    网络的容错与抗攻击能力

    网络上的动力学性质

    复杂网络的兴起
    计算机技术的发展:
    我们拥有各种网络的数据库,并有可能对大规模的网络进行实证研究

    普适性的发现:
    许多实际网络具有相同的定性性质且已有的理论不能描述和解释

    理论研究的发展
    小世界网络(Small World Network)、无标度网络(Scale-free Network),统计物理学的研究手段

    复杂网络分析过程

    如何建立复杂网络?

    如何定量刻画复杂网络?网络结构的描述及其性质

    网络是如何发展成现在这种结构的?网络演化模型或机制模型


    网络特定结构的后果是什么?网络结构的鲁棒性(指控制系统在一定参数摄动下,维持其它某些性能的特性),网络上的动力学行为和过程


    复杂网络的结构

    规则网络 随机网络  小世界网络 (平均路径短 集聚系数高)

    BA偏好模型

    Scale-Free 网络 

    特征: 连通性 幂律分布 非齐次性(很少的节点有很多连接,很多节点只有很少的连接) 节点数增加

     同配:高节点更倾向于与高节点连接 

    异配相反

    社团结构: 群内连接紧密 群和群连接稀疏。

     网络的结构与功能网络上的动力学行为和过程

    动力系统:自旋、振子或混沌的同步、可激发系统…传播过程:信息传播与拥堵、网络搜寻、运输过程、疾病传播、谣言的传播、舆论形成…
    博弈与其他社会行为:囚徒困境、少数者博弈…其他过程:电力网的级联失效等…
     

    (本文参考北师大系统科学学院夏令营,如有侵权,私删)

    展开全文
  • python来构建多层网络

    千次阅读 2019-10-27 18:52:46
    网络科学里面有单层的小世界网络,...本文就是把单层网络里面最简单的随机网络构造在多层网络的层内。主要是用来python里面的networkx库,下面给出代码。 # -*- coding: utf-8 -*- """ Created on Fri Jun 1...
  • 所有的构建复杂网络图的操作基本都围绕这个g来执行。 2. 节点 节点的名字可以是任意数据类型的,添加一个节点是 g.add_node(1) g.add_node(a) g.add_node(spam) 添加一组节点,就是提前构建好了一个节点列表,...
  • 截图来源于: Kim, J., & Lee, J. G. (2015). Community detection in multi-layer graphs: A survey. SIGMOD Record, 44(3), 37–48. https://doi.org/10.1145/2854006.2854013
  • 复杂网络模型总结

    千次阅读 2020-10-27 16:09:31
    非均匀网络(如BA无标度网络) 度数分布极度不均匀 关联性分类 无关联网络:任何一个节点的度与它的邻居节点的度是相互独立的 关联网络:节点的度与它的邻居节点的度不是相互独立的 一些基础 WS、NW小世界模型...
  • 多层网络-研究论文

    2021-06-09 18:00:56
    为了统一近期大量工作中的不同术语,我们讨论了多层网络的一般框架,构建了一个术语词典将众多现有概念相互联系起来,并提供了在相关概念之间进行比较、对比和翻译的深入讨论例如多层网络、多路复用网络、相互依赖...
  • 基于智慧城市多层异质复杂网络的决策可视化平台设计.pdf
  • 多层复杂网络建模,给出了一个新的模块,可以免费使用的哦
  • 多层神经网络

    2022-05-12 21:15:13
    这种增加了隐含层的神经网络就被称为多层神经网络。 在前面说过,与或非运算的结果都是线性可分的。可以通过下图第四个小图所示的感知机来实现。 给出合适的权值向量 W ,就可以实现与运算、或运算、非运算。 而...
  • 复杂网络分析拓扑指标

    千次阅读 2019-07-30 23:51:50
    无向图研究节点i所有连接的边的权重和作为点i的点强度,在复杂网络分析中,节点的点强度越大,说明该节点转换至其他节点的频数越多,该节点越重要。平均点强度就是所有点强度和除所有点的个数所得到的值 2.加权...
  • 食源性疾病总是通过多种媒介传播(例如新鲜蔬菜和水果),并揭示出多层网络可以传播具有复杂相互作用的致命病原体。 在本文中,首先,我们使用仅依赖于两个分布的“自上而下”的分析框架来描述具有任意数量层的随机...
  • 为了找到复杂网络的最佳分区,提出了一种新颖的框架,该框架包括两种基于最优集总马尔可夫动力学的网络划分算法来解决此问题。 在此框架下构造算法以最小化目标函数。 仿真实验表明,我们的算法可以有效地确定学习...
  • 具有多个方面的复杂多层网络中的模块化:静态视角
  • 人工神经网络多层神经网络

    千次阅读 2021-05-05 15:19:03
    多层神经网络1. 回顾2. 多层神经网络结构 1. 回顾 在上一讲中,我们提到从上个世纪80年代开始,人工神经网络领域迎来了新的突破,产生了多层神经网络,人们终于可以利用人工神经网络处理非线性问题了。 2. 多层神经...
  • 建立多层网络传播模型研究跨境电商新政策错误解读这一谣言传播问题,模型上层为虚拟网络传播层(虚拟层),下层为现实社会传播层(现实层),个体根据各自社交网络和行为习惯接收官方信息来控制多层网络谣言传播。...
  • 复杂网络 空间博弈

    2013-03-12 21:56:14
    这是一篇关于复杂网络空间博弈的的博士论文,相当不错,希望对你有用
  • 多层网络理论为基础,将企业看成节点,企业间的关系看成连边,依据供应链金融真实的交易背景,建立供应链金融网络演化模型,试图为供应链金融提供新的研究方法。通过数学解析得到该供应链金融网络累积稳态平均度...
  • 许多复杂的系统由通过不同层的耦合网络组成,其中每个层代表许多可能的交互类型之一。 一个基本的问题是如何在多层网络中提取社区。 当前算法要么将多层网络分解为单层网络,要么通过使用共识聚类扩展单层网络的算法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,936
精华内容 25,174
关键字:

多层复杂网络