精华内容
下载资源
问答
  • 多复杂
    千次阅读
    2021-09-29 10:36:13

    使用jpa进行查询时,总是很苦恼多条件复杂查询,一般来说是在repository中生成方法,多个变量之间加And就可以,这样的方法非常麻烦且变量方法名称太长,还有就是不能加排序和limit等复杂限制,下面介绍两种自己总结的方法

    findAll()方法

    findAll中的方法List<> findAll(Example<> example, Sort sort),此方法用于多条件查询以及排序
    Example<> 封装对象到Example,Sort sort是排序条件,

    public BusinessIndex findByCode(Long cityCode,Long disCode){
            //log.info(cityCode.toString()+","+disCode.toString());
            BusinessIndex businessIndex = new BusinessIndex();
            businessIndex.setCityCode(cityCode);
            businessIndex.setDisCode(disCode);
            log.info(businessIndex.toString());
            Example<BusinessIndex> a = Example.of(businessIndex);
            Sort sort =Sort.by(Sort.Direction.DESC,"DateOfValue");
            List<BusinessIndex> all = businessIndexRepository.findAll(a,sort);
            return all.get(0);
        }
    

    代码中cityCode和disCode是查询条件,结果按DateOfValue日志逆序排序,返回结果是List

    直接写sql语句

    在JPA的repository或者dao中写sql语句

    public interface BusinessIndexRepository extends JpaRepository<BusinessIndex,Long> {
    
        @Query(nativeQuery=true, value ="select * from businessIndex c where c.cityCode=:cityCode and c.disCode=:disCode order by DateOfValue DESC limit 1")
        BusinessIndex findByCode(@Param("cityCode") Long cityCode,@Param("disCode") Long disCode);
    }
    

    nativeQuery=true,表示可以执行原生sql语句,没有这个设置的话,limit 报错。注意数据库表名写成实际的表名,不要写成映射实体。

    更多相关内容
  • 复杂网络与大数据》第二章:复杂网络模型的学习笔记 目录 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的性质。

     

    展开全文
  • EasyExcel复杂表头导入(一对

    千次阅读 2022-01-06 21:21:16
    EasyPoi 框架的导入导出功能,乃至复杂表头的导入导出,网上都有很示例,我也写过几篇博客,其官方文档也很详细,功能强大。其官方文档地址经常访问不了,可以参考这个。 风铃开源文档-旧版 (afterturn.cn)...

    前言

    当前我使用过的导入导出框架有EasyPoi 和 EasyExcel,我用EasyPoi比较多。

    EasyPoi 框架的导入导出功能,乃至复杂表头的导入导出,网上都有很多示例,我也写过几篇博客,其官方文档也很详细,功能强大。其官方文档地址经常访问不了,可以参考这个。

    风铃开源文档-旧版 (afterturn.cn)https://opensource.afterturn.cn/doc/easypoi.html

    EasyExcel 框架是阿里巴巴团队开发导入导出框架,相较而言,EasyExcel要轻量简单高效一些。网上的示例也相对较少,胜在官网稳定简洁。EasyExcel · 语雀 (yuque.com)https://www.yuque.com/easyexcel/doc/easyexcel最近,我在写EasyExcel框架的一对多的导入功能,官方文档和网上都没有详细的说明,搞了半天,在此记录一下。

    说明:EasyExcel无法做到自动给我们处理成类里面嵌套List的效果,这就需要我们通过直接的方式先拿到数据,然后自行在service层处理。EasyPoi则有对应的注解和方法可以实现。

    EasyExcel一对多导入实现

    模板样式

     Entity对象

    @Data
    @ToString
    public class CustomerExcel implements Serializable {
    
    	/**
         * 客户编号
         */
        @ExcelProperty(index = 0)
        private String customerCode;
    	
        /**
         * 客户名称
         */
        @ExcelProperty(index = 1)
        private String customerName;
    
        /**
         * 客户所在地
         */
        @ExcelProperty(index = 2)
        private String address;
    
        /**
         * 联系人姓名
         */
        @ExcelProperty(index = 3)
        private String personName;
    
        /**
         * 联系电话
         */
        @ExcelProperty(index = 4)
        private String personPhone;
    
        /**
    	* 联系人姓名及电话List
        * 这个是需要我们自己整理的,EasyExcel做不到
    	**/
        @ExcelIgnore
        private List<Map<String, String>> contactsList;
    
    }

    Contorller 层

    @PostMapping("/import")
    @ApiOperation("导入客户信息列表")
    @ApiImplicitParam(name = "file", value = "导入的Excel文件", dataType = "File", paramType = "form", required = true)
    public ResponseMsg importCustomer(@RequestParam(value = "file") MultipartFile file) throws Exception {
    	InputStream inputStream = file.getInputStream();
    	List<CustomerExcel> list = EasyExcel.read(inputStream).headRowNumber(2).head(CustomerExcel.class).sheet().doReadSync();
    	ResponseMsg responseMsg = new ResponseMsg();
    	if (list == null || list.size() == 0) {
    		responseMsg.setCode(MsgCode.Error.value());
    		responseMsg.setDesc("导入失败,没有读取到导入数据!");
    		return responseMsg;
    	} else {
    		// service层
    		return customerService.importCustomer(list);
    	}
    }
    
    // 注意,我们在这里拿到的list数据是有问题,合并的单元格就一个单元格有数据,其他没有,所以需要在service层再做处理。

    Service 层

    /**
     * 导入客户基本信息
     */
    @Override
    public ResponseMsg importCustomer(List<CustomerExcel> list) {
    	// 待保存到数据库的数据
    	List<CustomerExcel> data = new ArrayList<>();
    	// 客户信息
    	CustomerExcel customer = new CustomerExcel();
    	// 客户联系人信息
    	List<Map<String, String>> contactsList = new ArrayList<>();
    
    	for (CustomerExcel obj : list) {
    		// 判断客户编号和客户名称是否为空
    		if (StringUtil.isNotBlank(obj.getCustomerCode()) && StringUtil.isNotBlank(obj.getCustomerName())) {
    			// 联系人信息列表是否有数据,如果有则要把数据保存起来
    			if (contactsList.size() != 0) {
    				customer.setContactsList(contactsList);
    				data.add(customer);
    			}
    			// 重置客户和联系人列表对象
    			customer = new CustomerExcel();
                contactsList = new ArrayList<>();
    
    			customer.setCustomerName(obj.getCustomerName());
    			customer.setCustomerCode(obj.getCustomerCode());
    			customer.setAddress(obj.getAddress());
    
    			Map map = new HashMap(4);
    			map.put("name", obj.getPersonName());
    			map.put("phone", obj.getPersonPhone());
    			contactsList.add(map);
    
    			// 如果客户编码和客户名称为空,则只拿联系人信息即可
    		} else {
    			Map map = new HashMap(4);
    			map.put("name", obj.getPersonName());
    			map.put("phone", obj.getPersonPhone());
    			contactsList.add(map);
    		}
    	}
    
    	// 保存最后一条数据
    	if (contactsList.size() != 0) {
    		customer.setContactsList(contactsList);
    		data.add(customer);
    	}
    
    	// 保存,或做其他处理。
    	customerMapper.insertBatch(data);
    
    	return new ResponseMsg();
    
    }
    展开全文
  • 复杂网络中聚类算法总结

    千次阅读 2019-03-15 18:18:50
    20世纪60年代,两位匈牙利数学家Erdos和Renyi建立了随机图理论,被公认为是在数学上开创了复杂网络理论的系统性研究。之后的40年里,人们一直讲随机图理论作为复杂网络研究的基本理论。然而,绝大多数的实际网络并...

     

    网络,数学上称为图,最早研究始于1736年欧拉的哥尼斯堡七桥问题,但是之后关于图的研究发展缓慢,直到1936年,才有了第一本关于图论研究的著作。20世纪60年代,两位匈牙利数学家Erdos和Renyi建立了随机图理论,被公认为是在数学上开创了复杂网络理论的系统性研究。之后的40年里,人们一直讲随机图理论作为复杂网络研究的基本理论。然而,绝大多数的实际网络并不是完全随机的。1998年,Watts及其导师Strogatz在Nature上的文章《Collective Dynamics of Small-world Networks》揭示了复杂网络的小世界性质。随后,1999年,Barabasi及其博士生Albert在Science上的文章《Emergence of Scaling in Random Networks》又揭示了复杂网络的无标度性质(度分布为幂律分布),从此开启了复杂网络研究的新纪元。
            随着研究的深入,越来越多关于复杂网络的性质被发掘出来,其中很重要的一项研究是2002年Girvan和Newman在PNAS上的一篇文章《Community structure in social and biological networks》,指出复杂网络中普遍存在着聚类特性,每一个类称之为一个社团(community),并提出了一个发现这些社团的算法。从此,热门对复杂网络中的社团发现问题进行了大量研究,产生了大量的算法,本文试图简单整理一下复杂网络中聚类算法,希望对希望快速了解这一部分的人有所帮助。本文中所谓的社团跟通常我们将的聚类算法中类(cluster)的概念是一致的。

    0. 预备知识

            为了本文的完整性,我们首先给出一些基本概念。
            一个图通常表示为G=(V,E),其中V表示点集合,E表示边集合,通常我们用n表示图的节点数,m表示边数。一个图中,与一个点的相关联的边的数量称为该点的度。对于一个图,图中所有点的度的和恰好等于边数的两倍。图通常用邻接矩阵A表示,邻接矩阵的(i,j)位置元素是1表示点i到点j右边,0表示无边。
            本文中我们会用到随机图的概念,所谓随机图,就是指一个图中任何两个点之间连边的概率相等。首先确定n个点,然后以固定概率p去给图中的一对顶点连边,就形成了一个随机图。在研究中,随机图通常用来作为一个null model来与实际网络进行比较,从而得出一些性质结论。
            研究社团的划分,一个需要解决的问题是,如何来衡量一个社团的划分的好坏?一个比较简单直观的原则是使得社区内部的边尽可能地多,社区之间的边间可能地少。另外一个稍微复杂点但是更为常用的度量是Newman等人提出的模块度(modularity)的概念,基本的想法是这样的:我们假设在随机图中是不存在这种社团结构的,将实际网络跟其相应的随机网络进行比较,如果一个网络跟随机网络之间的差异越大,表示社团结构越明显。这样,我们对划分后的每一个子网络计算一个“密度”,然后计算该子网络随机情况下的“密度”,这两个“密度”存在一个差值,表示了该子网络偏离随机情况的一种程度,并且这个值越大表示这个子网络相对随机网络越稠密。一个网络中包含的所有子网络的这个差值加到一起的和就是这个复杂网络的模块度,数学公式表示如下:
            1
    其中Aij表示图的邻接矩阵,ki 表示点i 的度,m是图的边数,ki*kj/2m表示点 i 和点 j之间边的期望。进一步将模块度可以化为等式右边的形式,nc是社团的总个数,lc是社团c内的边数,dc是社团内的点的度数之和 (note: 社团内的每一个点可能跟本社团内部的点有边,也可能有跟其他社团点连边,故通常 dc> lc)

    有了这些知识,我们来看一下复杂网络社团划分的各种算法吧。

    1. 图的剖分

            把一个网络划分成多个社团就是把一个图剖分成多个图,图的剖分问题是图论中一个比较难的问题,也是研究比较多的问题,理论上是NP-hard的。因此,人们通常研究比较简单的情况:图的二剖分,即把一个图分成两个(一般要求大小相等)的图,比较有名的算法是Kernighan-Lin 算法和谱平分法。

    1.1 Kernighan-Lin 算法[1]

    思想:不断交换两个子图中的点,使得两个子图之间的边尽可能地少
    定义增益函数: Q=两个社团内的边数-社团之间的边数
    算法步骤:
    Step1 随机划分为已知大小的两个社团
    Step2 从两个社团各取一个点,尝试交换并计算ΔQ = Q交换后-Q交换前,选择使ΔQ最大的一对节点对交换
    Step3 规定每个节点只能交换一次,对剩余节点重复step2, 直到 ΔQ <0,或者某个子图的所有节点都被交换了一次为止。
    Step4 允许每个节点的第二次交换,开始新一轮迭代,直到没有节点对可以交换

    1.2 谱平分法

            所谓“谱”,就是矩阵的特征值;所谓“平分”,就是将一个图分成大小相等的两个子图。谱平分法就是利用图的拉普拉斯矩阵的第二小特征向量来进行聚类的一种方法。 这里暂且先放一下,下面介绍完谱算法之后再回头具体介绍谱平分法。

    1.3 总结

            图的剖分常常需要制定子图的个数(否则,整体作为一个),甚至每个子图的大小(否则,常常会将一个点分为一个子图)。但是如果已知一个图就是两个社团组成,谱评分法往往可以得到很好的效果。

    2. 凝聚法

            这是一大类算法,总体思想是寻找社团“最中心”的边,不断地把最相似的两个点聚到一起,从点聚到小社团,再聚成大社团。根据定义两个点的相似性的不同,产生了很多不同的算法。有的算法并不直接计算相似性,而是看两个点合并到一起后模块度的变化情况,根据变化的大小来选择需要合并的两个点。比较有代表性的算法是Newman在2004年的一个算法[2]

    2.1 Newman算法

    思想:不断地选择是模块度增长最大的两个社团进行合并
    算法步骤:
    Step1. 每个点当作一个社团
    Step2. 计算两个社团合并后模块度的变化(增长) ΔQ,选取使得ΔQ最大的两个社团进行合并 
    Step3. 重复step2直到最后合并为一个社团

    2.2 Newman算法的优化

    Newman算法复杂性是O((m+n)n),Clause,Newman和Moore利用最大堆将该算法复杂度降低为O(n(logn)^2)[3]
    对于该算法, 人们想出了很多改进措施,例如以下两个策略: 
    1. multistep贪婪算法:每次迭代合并多个社团
    2. 归一化ΔQ,消除社团大小的影响

    2.3 总结

            凝聚法优点是简单,限制少,不需要预先指定社团个数,可以发现社团的层次关系。缺点是缺乏全局目标函数; 两个点一旦合并,就永远在一个社团中了,无法撤消;另外,这种算法往往对单个的点比较敏感

    3. 分裂法

            分裂法的基本思想是找出最有可能位于社团之间的边,把这些边去掉,就自然产生了不同的社团。代表性的算法是Girvan 和Newman在2002年的一个算法 [4].

    3.1 GN 算法[4]

    首先给出介数(etweenness)的定义,一个边的介数(edge betweenness)是指通过该边的最短路的条数。
    直观上,社团之间的边有较高的betweenness,而社团内部的边betweenness相对较小,这样,通过逐个去掉这些高betweenness的边,社团结构就会逐步显现出来。
    算法步骤:
    Step1. 计算每条边的介数 (O(nm) with BFS)
    Step2. 去掉具有最高介数的边
    Step3. 如果满足了社团划分的要求, stop; 否则, 转step1.

    利用各种其他度量(如边聚类系数等)来代替边介数,该算法也产生了各种各样的变种。

    3.2 其他分裂方法

            分裂法还有很多,如MST,JP算法等等,在此就不一一描述了。

    3.3 总结

            凝聚法跟分裂法是对应的,一个自下而上,一个自上而下,一个不断把点连在一起,一个不断去边把点分开。分裂法的优缺点跟凝聚法类似。

    4. 谱算法

            首先给出一个概念——图的Laplacian 矩阵(L-矩阵)。设A为图的邻接矩阵; D为一个对角阵(对角元素为点 i 的度),则图的Laplacian矩阵L=D-A。关于L-矩阵,有很多性质,如:(1) 矩阵的每一行的元素之和为0 ,由此可以知道该矩阵至少一个0特征值,并且0特征值对应的特征向量为全1向量(1,1,...,1)。(2)0 特征向量的个数与连通分支的个数相同;如果一个图是连通的,那么其Laplacian矩阵只有一个0特征值,其余特征值都是正的。(3)不同特征值的特征向量正交的。
    所谓谱,就是指矩阵的特征值。谱算法就是利用邻接矩阵或者拉普拉斯矩阵的特征向量,将点投影到一个新的空间,在新的空间用传统的聚类方法(如k-means)来聚类。

    谱算法的一般步骤是:
    Step1. 计算相似矩阵(如邻接矩阵A)的前 s 个特征向量 
    Step2. 令 U 是一个 n× s 矩阵,每一列是一个特征向量 
    Step3. U 的第 i 行作为点 i 的坐标,用层次聚类法或者k-means等得到最终的社团
    需要说明一点是: 如果是计算邻接矩阵的特征值,一般取最大的s个特征值;如果是计算Laplacian矩阵的特征值,则是计算最小的(除0外)s个特征值。

            前面我们提到过谱平分法,就是利用Laplacian矩阵倒数第二个小的特征值对应的特征向量(称为Fiedler 向量)来聚类的。因为需要把一个图平分成两个子图,因此就把Fiedler向量中正的分量对应的点分成一类,负的分量对应的点分成另一类。

            谱算法的计算瓶颈是计算矩阵的特征值,因为少数的几个特征向量就可以得到很好的聚类,所以只需要计算最大的几个特征值既可以,可以考虑用Lanczos method。

    5. 矩阵分解

            谱算法的实质是矩阵分解,其他的矩阵分解方法还有SVD 和 NMF 等,矩阵分解的整体思想就是把点从一个空间映射到另一个空间,在新的空间利用传统的聚类方法来聚类。

    6. 标签传播算法

            标签传播(Label propagation)算法是由Zhu X J于2002年提出[5],它是一种基于图的半监督学习方法,其基本思路是用已标记节点的标签信息去预测未标记节点的标签信息。2007年,Raghavan U N等最早提出将LPA最早应用于社区发现,该算法被简称为RAK算法[6]

    思想: 每个节点赋予一个标签标志着其所在社区,每次迭代,每个节点标签根据其大多数邻近节点的标签而修改,收敛后具有相同标签的节点属于同一个社区。
    算法步骤:
    Step1 给每一个节点随机生成一个标签
    Step2 随机生成一个所有节点的顺序,按照该顺序将每一个节点的标签修改为其大多数邻居节点的标签。
    Step3 重复step2,直到每个节点的标签都不再变化,具有相同标签的节点组成了一个社区。

    7. 随机游走

    随机游走: 从一个顶点向下一个顶点移动时,以相等的概率来选择当前顶点的一个邻居作为下一个顶点。
    基本思想: 社团时相对比较稠密的子图,因此在图中进行随机游走时很容易“陷入”一个社团中。

    随机游走的过程构成了一个Markov链。图中每一个顶点对应一种状态;不同状态之间的转移概率为 2
    t 步随机游走从 i 到 j 的概率是 Pij 的t次幂

    下面我们介绍一个代表性的随机游走算法,叫做Walktrap 算法[7]

    Walktrap 算法

    定义如下距离:
    顶点 i 和 j 的距离:3
    社团C到点j的距离:4
    社团C1到C2的距离: 5

    算法步骤:
    Step1 每一个点当做一个社区,计算相邻的点(社团)之间的距离
    Step2 选取使得下式最小的两个社团C1和C2 合并为一个社团,
    6
    重复这一步骤直到所有点合并为一个社团。

    标签传播算法尽管速度快,但是效果并不太理想。

    8. Louvain (BGLL) 算法

            Louvain (BGLL) 算法[8]是一个基于模块度最优化的启发式算法,算法两层迭代,外层的迭代是自下而上的凝聚法,内层的迭代是凝聚法加上交换策略,避免了单纯凝聚方法的一个很大的缺点(两个节点一旦合并,就没法再分开)。

    算法步骤:
    Step1 每一个点初始时被看作一个社团, 按一定次序依次遍历每一个顶点. 对每一个顶点i ,考虑将 i 移至其邻居顶点 j 的社团中模块度的变化ΔQ 。如果 ΔQ>0,将 顶点i 移至使得ΔQ变化最大的顶点的社团中; 否则,顶点 i 保持不动。重复这个过程,直到任何顶点的移动都不能使模块度增大。
    Step2 将step1得到的每一个社团看作一个新的顶点,开始新的一轮迭代,直到模块度不再变化。

    该算法简单、直观,容易实现;速度快,并且效果也很好。综合效率和效果两方面考虑,该算法应该是目前最好的方法之一。

    9.Canopy算法 + K-Means

    9.1 Canopy算法

    思想:选择计算代价较低的方法计算相似性,将相似的对象放在一个子集中,这个子集被叫做Canopy,不同Canopy之间可以是重叠的
    算法步骤:
    Step1 设点集为 S,预设两个距离阈值 T1和 T2(T1>T2);
    Step2 从S中任选一个点P,用低成本方法快速计算点P与所有Canopy之间的距离,将点P加入到距离在T1以内的Canopy中;如果不存在这样的Canopy,则把点P作为一个新的Canopy的中心,并与点P距离在 T2 以内的点去掉;
    Step3 重复step2, 直到 S 为空为止。

    该算法精度低,但是速度快,常常作为“粗”聚类,得到一个k值,再用k-means进一步聚类,不属于同一Canopy 的对象之间不进行相似性计算。

    9.2 K-Means

    K-Means大家都比较熟悉,基本思想是首先找各个社团的“中心点”, 然后就近分配每个顶点
    算法步骤:选取k个点作为 k个社团的初始中心点
    Step1. 把每个点分配到最近的中心点所在的社团;
    Step2. 重新计算中心点,如果中心点不变, stop; 否则, 转 step1.
    K-Means算法计算量相对比较大,效果往往还不错,但是使用前要考虑一点:通过各个分量求平均得到的中心点是否有意义, 也就是说在你的问题中欧式距离是否有意义。

    10. 基于密度的快速聚类

    今年science上有一篇关于聚类的文章[9],提出一种快速的聚类方法,基本思想是: 找出每个类的中心点,将剩余的点按一定策略分配到每个类中。思想很简单,但是文中找每个类中心点的做法还是很有新意的。
    算法步骤
    Step1 对每一个点i,计算两个量:点i的密度 7 和点 i 到比其密度更高的其他所有点的最小距离 8
    Step2 选取10 都较大的点作为每一社团的中心点(背后的思想是:类的中心应该密度比较大,不同类的中心相互之间应该离的比较远)
    Step3 对于剩余的非中心点,分配给离它最近且密度比它高的邻点所坐在的社团

    参考文献

    [1].Kernighan & Lin ,An efficient heuristic procedure for partitioning graphs. Bell System Technical Journal 49: 291–307,1970.
    [2] Newman. Fast Algorithm for Detecting Community Structure in Networks. Phy.Rev.E, 2004.
    [3] Clauset et al. Finding community structure in very large networks, Phy.Rev.E, 2004.
    [4] Girvan& Newman,Community structure in social and biological networks, PNAS, 2002
    [5] Zhu et al . Learning From Labeled and Unlabeled Data With Label Propagation, Technical Report, CMU-CALD-02-107,2002
    [6] Raghavan et al. Near linear time algorithm to detect community structures in large-scale networks, Phy.Rev.E., 2007.
    [7] P. Pons et al. Computing communities in large networks using random walks. Journal of Graph Algorithms and Applications,2006.
    [8] Vincent D. Blondel et al, Fast Unfolding of Communities in Large Networks, Phy.Rev.E, 2008
    [9] Rodriguez & Laio, Clustering by fast search and find of density peaks. Science.2014

    展开全文
  • 1、解 syms x eq=x^2+2*x+1; s=solve(eq,x) 结果: s = ...这里使用到syms x,意思是定义一个变量 x, 之后可以使用这个变量构造表达式。...solve(eq,x)是将x作为求解变量,求解eq=0的结果。...f = x + k - ...
  • mybatisplus条件并列复杂查询

    千次阅读 2020-06-02 20:47:07
    在使用mybatisPlus时,有时需要一些负责的sql条件拼接,这时,我们可以利用 QueryWrapper的and(Consumer consumer) 和 or(Consumer consumer) 来对条件进行拼接。 查询条件拼接, 例如:(a and b) OR (c or d) ...
  • C++ Qt进阶之复杂控件自定义

    千人学习 2019-05-05 13:36:47
    为什么很同学学了很年编程,看了很书,教程,还是不会写,只能在网络上copy代码?或者自己没有动手能力,遇到稍微复杂的东西就束手无策?为什么那些高效率学习的人,能在三五天内掌握Qt,并开始写软件,做...
  • 复杂网络分析

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

    千次阅读 2022-01-12 20:46:30
    复杂网络 理解:节点和边构成的网络图,比如社交网络...假设图中有一部分点是两两相连的,那么可以找出很个“三角形”,其对应的三点两两相连,称为闭三点组。除此以外还有开三点组,也就是之间连有两条边的三点(缺
  • 为什么说C++太复杂复杂的必要性是为什么?

    万次阅读 多人点赞 2020-05-05 09:54:01
    文章目录1 常见观点2 反驳观点3 为什么要解决的问题越复杂,工具就不得不复杂?3.1 类库和语言语意3.2 折中方案3.3 复杂度的守恒 1 常见观点 可以轻易的找出许多文献说明C++太复杂了,例如学习C++的书籍的厚度。 ...
  • 目前已累计申请了300项区块链技术的发明专利,2019年据德温特专利家族统计,复杂美区块链发明专利排名位于全球第三,仅次于阿里巴巴和IBM。  公司总部位于杭州,并在南京、广州、海南设有分部。目前,...
  • List去重复 ,我们首先想到的可能是 利用...但是如果是复杂对象,即我们自己封装的对象。用List转Set 却达不到去重复的目的。 所以,回归根本。 判断Object对象是否一样,我们用的是其equals方法。 所以我们只需要重写e
  • 复杂网络模型总结

    千次阅读 2020-10-27 16:09:31
    改进复杂网络同步的方法 无序扰动改进同步特性:通过小波变换来提高同步 通过时滞提高网络同步特性:在有明显时滞时,网络达到为稳定同步流形时所需要的耦合强度,要比无时滞网络达到同样的同步流形所需要的耦合强度...
  • 复杂网络】自学笔记整理

    万次阅读 多人点赞 2020-06-29 17:15:45
    一、复杂系统与复杂网络 1.研究目的        复杂网络是研究复杂系统的一种角度和方法,它主要关注系统中个体相互关联的作用。(一种拓扑结构) 2.当今应用    &...
  • 计算机组成原理课程设计:复杂模型机

    万次阅读 多人点赞 2021-02-07 15:29:30
    设计题目: 复杂模型机 目 录 1、课程设计任务书 3 1.1设计任务 3 1.2性能指标和设计要求 3 2、本设计的模型机体系结构及功能 4 2.1 模型机的体系结构 5 2.2 模型机所具有的基本功能 5 3、 模型机硬件设计 5 3.1 ...
  • 复杂网络研究及其前沿概述

    千次阅读 2019-02-22 21:25:26
    复杂网络研究及其前沿概述1 引言2 复杂网络研究史2.1 七桥问题2.2 随机图理论2.3 小世界网络、无标度网络3 复杂网络的研究特点3.1 网络规模大3.2 网络结构具有复杂性和多元性3.3 网络具有时空复杂性3.4 复杂网络存在...
  • Android 复杂首页实现

    千次阅读 2021-09-29 18:25:32
    Android 复杂首页实现 NestScrollView + RecylceView RecycleView + ViewType。 优化; concatAdapter. BaseRecyclerViewAdapterHelper Corordinarlayout 实现 隐藏, PIN CoordinatorLayout AppBarLayout ...
  • 问题: 平台师傅有个评分属性,比如:位置,能力水平,信用分,服务时间等,用户每次下单得查找所有在线师傅 计算综合分后排名返回给用户,整个工作可能非常耗时(师傅数量万级基本超时),php-fpm 无法线程工作;...
  • 复杂网络的研究

    千次阅读 2018-11-04 21:53:53
    1. 复杂网络定义 : 复杂网络概念最开始的时候是相对于规则网络和随机网络提出来的,即介于规则网络和随机网络之间的网络都可以称之为复杂网络。—狭义的复杂网络 从广义上说,任何网络都可以称之为复杂网络,...
  • java中json转复杂对象

    千次阅读 2020-08-27 13:34:08
    java 中json转复杂对象前言解决方式工具包解析方式示例...本篇主要是对一些比较复杂的json字符串数据转为对象,是些jsonArray 和 json 相互嵌套的复杂处理. 解决方式 工具包 用的com.alibaba.fastjson.JSONObject; 的
  • jackson 解析复杂json问题

    千次阅读 2018-04-19 18:34:16
    jackson 解析复杂json问题 jackson常见的json生成和解析的工具包,下面一起看看它对于复杂的json解析时带来的问题 jackson简介 jackson依赖包 jackson解析javaBean jackson解析泛型的List jackson解析复杂的json ...
  • 复杂网络分析(一)

    千次阅读 2020-11-10 21:45:58
    一、复杂网络是复杂系统的骨架,复杂系统可以抽象成一个网络,来反映元素之间的相互作用;要想理解一个复杂系统,需要对复杂网络进行分解成单个元素,再研究他们之间的组合是如何相互作用起来的;网络分析的重要性...
  • MybatisPlus使用queryWrapper实现复杂查询

    千次阅读 2021-07-15 00:30:46
    // mp实现负责查询操作 @Test public void testSelectQuery(){ //1,创建QueryWrapper对象 QueryWrapper<User> wrapper = new QueryWrapper<>(); // 2,通过QueryWrapper设置条件 ...
  • 一文读懂复杂网络(应用、模型和研究历史)

    万次阅读 多人点赞 2018-05-02 09:40:05
    摘要:随着近几年关于复杂网络(Complex network)理论及其应用研究的不断深入,已有大量关于复杂网络的文章发表在Science,Nature,RL,NAS等国际一流的刊物上,侧面反映了复杂网络已经成为物理界的一个新兴的研究...
  • 复杂网络分析总结

    万次阅读 多人点赞 2018-04-08 15:31:40
    复杂网络的特点2. 社区检测3. 结构平衡4. 影响最大化5. 网络传播6. 补充7. 参考文献 在我们的现实生活中,许多复杂系统都可以建模成一种复杂网络进行分析,比如常见的电力网络、航空网络、交通网络、计算机网络...
  • 一文了解基于复杂网络的机器学习

    千次阅读 2020-08-26 07:00:00
    这也导致了一个有趣的现象,介绍复杂网络的教材,一般会分为两个部分,第一个部分介绍图论的相关内容,这是复杂网络的基础,第二个部分介绍复杂网络的各种理论模型,这才是复杂网络理论的本体,一本书读完下来,...
  • 复杂网络数据集整理

    千次阅读 2019-04-11 09:22:22
    复杂网络的研究很都离不开数据集,下面这些是个人在做科研的过程中在互联网上搜集到的一些数据集网站,列举出来也方便同行们去使用。 1、http://vladowiki.fmf.uni-lj.si/doku.php?id=pajek:data:urls:index ...
  • Layui复杂表格

    千次阅读 2019-06-08 01:24:28
    常见的表格只有一行表头的,但我们今天做一个复杂表格,先看看单表头的效果,等一会写完复杂表格再看复杂的表格。 把控制器搭建好了就开始写页面的代码,这里要把layui表格用到的css、js插件拷贝到项目,然后显示...
  • 关于钱学森定义复杂网络一事的探究

    千次阅读 多人点赞 2018-11-11 21:27:41
    由于本人从事与复杂网络有关的研究,次在网上看到有关“钱学森给出复杂网络的定义”这样内容的文章,甚至百度百科也是这么介绍的。 百度百科-复杂网络 钱学森给出了复杂网络的一个较严格的定义:具有自组织、...
  • 复杂网络链路预测

    万次阅读 多人点赞 2018-12-18 19:29:43
    抽空整理了一下链路预测的相关研究,在网络科学中这个问题已经被研究了10年以上了,已有非常的研究工作。吕琳媛和周涛曾在2013年专门出版过一本专著《链路预测》来介绍这个研究方向。此书也是本文的主要参考对象。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,398,267
精华内容 1,359,306
关键字:

多复杂