CN111651683A - 一种参数可调的无标度网络生成方法 - Google Patents
一种参数可调的无标度网络生成方法 Download PDFInfo
- Publication number
- CN111651683A CN111651683A CN202010488396.4A CN202010488396A CN111651683A CN 111651683 A CN111651683 A CN 111651683A CN 202010488396 A CN202010488396 A CN 202010488396A CN 111651683 A CN111651683 A CN 111651683A
- Authority
- CN
- China
- Prior art keywords
- community
- nodes
- network
- degree
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000009826 distribution Methods 0.000 claims abstract description 43
- 230000008569 process Effects 0.000 claims description 11
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 230000002776 aggregation Effects 0.000 abstract description 16
- 238000004220 aggregation Methods 0.000 abstract description 16
- 238000011160 research Methods 0.000 abstract description 8
- 230000001105 regulatory effect Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 230000006855 networking Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000001276 controlling effect Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 244000005700 microbiome Species 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9536—Search customisation based on social or collaborative filtering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/01—Social networking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Economics (AREA)
- General Health & Medical Sciences (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种参数可调的无标度网络生成方法,包括以下步骤:设置网络拓扑结构参数;生成符合幂率分布的度序列;将度序列分为社区内的度和社区间的度;生成社区,分配节点;生成社区内连边;生成社区间连边;更新字段,导出网络数据。本发明属于复杂网络技术领域,能够为复杂网络相关研究提供快速、灵活的网络数据生成模型,为相关算法研究提供丰富的基础数据,能够快速开发实现,解决了现有无标度网络生成方案不能同时调节聚集系数和模块度参数并带社区结构的难题。
Description
技术领域
本发明涉及复杂网络技术领域的网生成模型方法,具体涉及一种参数可调的无标度网络生成方法。
背景技术
从1998年Watts和Strogatz提出小世界网络模型,以及1999年Barabási和Albertt提出无标度网算起,复杂网络领域的研究已经蓬勃发展了20年,其研究者来自图论、统计物理学、计算机网络、生态学、社会学以及经济学等各个不同领域,从近年来发表的SCI论文看,复杂网络研究在我国以至全世界范围内仍然呈迅猛发展的势头。
自然界中许多真实的复杂系统都可以用网络的形式来描述和分析,如社会网络、通信网络、交通网络、商贸网络以及生物网络等,深入研究复杂网络的结构与功能关系,网络的生成机制,网络演化规律,网络上的模型性质,并把它与具体的系统结合起来,是复杂网络研究的中心内容。研究微生物需要细菌培养皿帮助其产生大量的实验研究对象,同样,研究复杂网络也需要网络生成方法来帮助其产生大量接近真实网络的基础数据。同时,网络生成方法本质就是在构建复杂网络模型,这将有助于理解复杂网络的生成演化机制,有助于深入理解信息在网络上传播等网络行为的内在规律。因此,网络生成方法有非常广泛的应用价值,是复杂网络研究的重要基础课题。
Watts和Strogatz提出了一种介于规则网和随机网之间的WS小世界网络模型的构建方法,其生成的网络具有较小的平均距离和较大的聚集系数,度分布为指数分布。Barabási和Albertt提出了一种BA增长网络模型,其生成的网络度分布是指数为3的幂率分布,具有较小的聚集系数,并具有小世界效应。真实网络通常具有较小的平均路径,较大的聚集系数,节点度大多呈近似幂率分布,能够表现出无标度特性,具有社区结构等。而WS网络与BA网络在网络主要拓扑特性上与很多真实网络都不太一致,因此它们并不能很好地刻画真实网络。随后,Dorogovtsev和Mendes根据网络生成演化的动态性提出了MEGM模型,Sales-Pardo等人通过提取网络的层次结构方法,提出了一种能够嵌套层次结构的NEST模型,但它们仅能反映真实网络的部分结构特性,不能生成具有结构多样性的网络。Newman等人提出了GN-Benchmark模型,能够构造具有明显社区结构的正则网络模型,但该模型生成的网络不能调节聚集系数和模块度,网络结构单一。Fortunato等人LFR-Benchmark模型,能够生成度分布呈幂率的无标度特性,带有明显社区结构且模块度可调的网络,但无法调节重要的聚集系数。Tmara等人在ER图模型的基础上提出了一种服从幂率分布的BTER模型,能够生成聚集系数可调并具有社区结构的复杂网络,但不能调节刻画社区紧密程度的模块度。因此,找到一种参数可调的无标度网络生成方法具有现实意义和实际需求。
发明内容
本发明所要解决的技术问题是由于真实网络通常具有较小的平均路径,较大的聚集系数,节点度大多呈近似幂率分布,能够表现出无标度特性,具有社区结构等,而现有技术均不能很好的刻画真实网络,目的在于提供一种参数可调的无标度网络生成方法,解决现有技术不能灵活调节多种参数,生成更加符合真实网络结构特征的问题。
本发明通过下述技术方案实现:
一种参数可调的无标度网络生成方法,包括以下步骤:S1:设置基本网络拓扑结构参数,所述基本网络拓扑结构参数包括:N:总节点数;;Ki:节点的最小度数;Ka:节点的最大度数;C:社区总数;Ci:社区最小节点数;Ca:社区最大节点数;k:节点度值;S2:根据所述基本网络拓扑结构参数,生成符合幂率分布的度序列;S3:将所述度序列分为社区内的度和社区间的度,将节点按照度值从小到大排成节点序列,节点序列为
Nodes(i,k,kin,kout,c|0≤i≤N-1,Ki≤k≤Ka,kin+kout=k)其中,i为节点序号,kin表示社区内的度值,kout分别表示社区间的度值,kin的初始值为k,kout的初始值为0,c为节点所属社区,c的初始值为0;S4:生成社区,确定每个社区的节点数,并将节点分配到社区,建立社区序列Communities(i,n|0≤i≤C-1,Ci≤n≤Ca)其中,i为社区序号,n为社区拥有的节点数,确定每个社区的节点数,根据所述每个社区的节点数,将节点随机分配到各个社区;S5:生成社区内连边和社区间连边,建立一个连边序列
Edges(n1,n2,c1,c2|n1,n2∈Nodes,c1,c2∈Communities)其中,n1和n2表示该连边的两个节点,c1表示节点n1来自的社区,c2表示节点n2来自的社区;S6:更新节点、连边、社区和三者之间的相关参数,重新统计网络数据并导出。
本发明方法先预设网络规模、网络密度、社区数量、模块度、幂指数以及聚集系数等多个网络拓扑结构参数,生成无向、无环、无权、带社区结构的无标度网络。再根据网络特性灵活调整参数来构建不同的网络,生成的网络拓扑结构更加丰富,更接近真实网络;充分兼顾效率与效果,整体运算复杂度较低,能够适用于生成较大规模的网络。本发明方法能够为复杂网络相关研究提供快速、灵活的网络数据生成模型,为相关算法研究提供丰富的基础数据,能够快速开发实现,解决了现有无标度网络生成方案不能同时调节聚集系数和模块度参数并带社区结构的难题。
进一步的,所述幂率分布如下:p(k)=ak-γ或p(k)∝k-γ其中p(k)表示在网络中随机一个节点度值为k的概率,γ为度值呈幂率分布时的幂指数,a为比例常数,a的值由网络密度D以及节点的最小、最大度值Ki、Ka决定;
假设a取值为1,根据网络基本结构参数γ、Ki及Ka,便可得到由所有可取得的度值的节点度序列p1(k,pk|Ki≤k≤Ka),pk为节点度值为k的概率;
节点数为整数,因此,在上述计算过程中,难免会因将小数取整而导致误差,使得在度序列p2中的节点总数与网络总节点数之间存在误差为了消除误差,将误差的节点数全部在度值最小的节点上进行修正,修正后更新度序列p2;
取得a的值之后,按比例计算新的度值k'=a×k,取整后更新到度序列p2中,然后再计算节点总度数的误差εk=K-Σk×nk,为了消除误差,将误差的度数全部加在度值最大的一个节点上进行修正,由此得到最终符合网络结构参数的度序列:p(k,pk,nk|Ki≤k≤Ka)其中,pk为节点度值为k的概率,nk为度值为k的节点数。
进一步的,根据节点总度数K和社区内的度占总度数的比例μ,可计算出网络中总的社区间度数为Kout=(1-μ)×K;其中,K为网络总节点度数,K为整数且为偶数;将所有节点的所有度进行编号,并随机排序形成一个度序列,再随机抽取其中的Kout个度设置为社区间的度,并更新节点序列Nodes中的kin和kout,便得到随机的、符合网络参数社区内的度占总度数的比例μ的节点序列Nodes。
进一步的,所述步骤S4中包括以下子步骤:S41:随机给每个社区分配Ci个节点数,则剩下未分配的节点数为remain_n=N-C×Ci;S42:在5~remain_n/2范围内随机生成一个待分配节点数,随机分配到任意一个社区,并检查分配后的社区中节点总数是否超过Ca,若超过则重新随机选取未分配节点数,重新随机分配到任意一个社区,同时更新remain_n,重复该操作,直至所有节点数被成功分配到社区;S43:更新社区序列中的节点数n。
进一步的,将节点随机分配到各个社区时,为了避免某个节点的社区内度值大于社区总节点数,应从社区内度值最大的节点开始分配,分配成功后更新节点序列的c字段为其所属社区序号。
进一步的,当c1与c2相等时,表示该连边为社区内连边;当c1与c2不相等时,表示该连边为社区间连边;建立新的连边、修改已有连边、删除连边以及查询连边的操作都在连边序列Edges中进行。
进一步的,所述生成社区内连边包括对每个社区分别进行四轮连边,具体如下:第A1轮连边:遍历该社区全部节点,得到该社区全部社区内的度的总数,记为ckin,根据预设网络结构参数社区内连边专找能形成三角形模体的比例m,随机抽取该社区节点中ckin×(1-m)个社区内的度,进行随机连接,形成ckin×(1-m)/2条连边;这里的连边须连接社区内两个之前未曾连接过的节点,即不能是某个节点的自连环,也不能有重复连边;第A2轮连边:对于社区内剩余的ckin×m个度,专找能形成三角形模体的节点建立连边;具体方法为,在社区内随机找一个节点,找出与之已建立连边的邻居节点,在这些邻居节点中找到两个尚未建立链接的节点,去建立新的连边;然后重复这个过程,直到剩余的未连接的社区内的度都已用完,或者再也找不到那样的两个节点为止;第A3轮连边:前面两轮建立连边的操作都是随机的,因此可能会存在因不满足某些条件而未能建立连边的节点和剩余的社区内的度;本轮连边就是遍历社区内的节点,找出剩余未建立连边的社区内的度和节点,在保证不会形成直连环和重复边的情况下,进行随机连接,尽可能地建立连边;最后如果还有极少量未能使用的社区内的度,则更新节点序列Nodes,将其去掉;第A4轮连边:一个社区一定是一个连通图,在网络密度较低或者社区内的度占总度数的比例较小时,经过前面三轮的随机建立连边之后,得到的社区可能是个非连通图;本轮连边就是要检查社区内连边的情况,如果发现是非连通图,则将各个子图随机添加一条边连接到另一子图的任一节点上,使得各个子图连接在一起,使整个社区为一个连通图。
进一步的,所述生成社区间连边,包括两轮连边:第B1轮连边:遍历所有社区所有节点,找出所有的社区间的度,然后随机建立连接;这里新建连边须要满足的条件是:不能是自连环,不能是重复连边,两个节点不能是来自同一社区;第B2轮连边:避免在网络密度较低或者社区内的度占总度数的比例极大时,经过前面第一轮的随机连边后,可能存在孤立社区,得到的网络可能不是一个连通图;具体做法是依次随机选出社区,在相邻两个社区中随机选择一对节点建立一条连边(前提是不能是重复连边),这样就保证了最后得到的网络一定是连通图。
进一步的,所述步骤S6具体包括:根据节点序列Nodes、社区序列Communities以及连边序列Edges的最终数据,重新统计网络中的社区内边数、社区间边数、节点的社区内度和社区间度值,更新相关字段;按照应用需要的格式,导出网络拓扑结构统计数据,节点序列,社区序列以及连边序列的数据。
本发明与现有技术相比,具有如下的优点和有益效果:
本发明根据网络特性,灵活调整参数来构建不同的网络,可生成的网络拓扑结构更加丰富,更接近真实网络;充分兼顾效率与效果,整体运算复杂度较低,能够适用于生成较大规模的网络;本发明步骤清晰,目标分明,可扩展性强,技术原理易理解,可以通过现有的计算机语言和数据库快速开发实现。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:
图1是本发明方法流程图;
图2是生成社区并将节点分配到社区的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
在以下描述中,为了提供对本发明的透彻理解阐述了大量特定细节。然而,对于本领域普通技术人员显而易见的是:不必采用这些特定细节来实行本发明。在其他实例中,为了避免混淆本发明,未具体描述公知的结构、电路、材料或方法。
实施例1
本实施例1是一种参数可调的无标度网络生产方法,具体方案如下;
整体包含七个步骤:
S1:设置基本网络拓扑结构参数;
S2:然后生成符合幂率分布的度序列;
S3:然后将度序列分为社区内的度和社区间的度;
S4:生成社区,确定每个社区的节点数,并将节点分配到社区;
S5:生成社区内连边;
S6:生成社区间连边;
S7:重新统计网络数据,更新节点、边以及社区三个对象的相关字段,导出网络数据。
步骤S1,需要设置的基本网络拓扑结构参数具体包括:
N:总节点数,即网络规模
C:社区总数
D:网络密度,结合总节点数,可计算出网络的总边数
γ:度分布幂指数
Ki:节点的最小度数
Ka:节点的最大度数
Ci:社区最小节点数
Ca:社区最大节点数
μ:社区内的度占总度数的比例(用于调控网络模块度)
m:社区内连边专找能形成三角形模体的比例(用于调控网络聚集系数)
根据以上设置的基本参数,按照下列公式便可计算出网络的总节点度数K和总边数E:
K=D×N×(N-1)
其中,K为整数,且为偶数。
步骤S2,生成符合幂率分布的度序列,幂率分布的数学公式为:
p(k)=ak-γ
或
p(k)∝k-γ
其中p(k)表示在网络中随机选择一个节点,其度数为k的概率,γ为度值呈幂率分布时的幂指数,a为比例常数,其值由网络密度D以及节点的最小、最大度值Ki、Ka决定。
假设a取值为1,根据网络基本结构参数γ、Ki及Ka,便可得到由所有可取得的度值的节点度序列p1(k,pk|Ki≤k≤Ka),pk为节点度值为k的概率。
节点数为整数,因此,在上述计算过程中,难免会因将小数取整而导致误差,使得在度序列p2中的节点总数与网络总节点数之间存在误差为了不影响网络规模,需要消除此误差,将误差的节点数全部在度值最小的节点上进行修正,即修正后更新度序列p2;由于网络节点的度值呈幂率分布,度值最小的节点数量最多,这样处理误差不会对整体度分布特征造成较大影响。
取得a的之后,按比例计算新的度值k'=a×k,取整后更新到度序列p2中,然后再计算节点总度数的误差εk=K-Σk×nk,为了不影响网络密度,需要消除此误差,将误差的度数全部加在度值最大的一个节点上进行修正,由于幂率的特点,较大的度值远大于较小的度值,这样处理误差不会对整体度分布特征造成较大影响,由此得到最终符合网络结构参数的度序列p3(k,pk,nk|Ki≤k≤Ka)。
步骤S3,将度序列分为社区内的度和社区间的度,其步骤为:
首先,将节点按照度值从小到大排成一个节点序列
Nodes(i,k,kin,kout,c|0≤i≤N-1,Ki≤k≤Ka,kin+kout=k),i为节点序号,k为节点度值,kin和kout分别表示属于社区内的度值和属于社区间的度值,初始设置kin为k,kout为0,c为节点所属社区,初始值为0。
然后,根据节点总度数K和社区内的度占总度数的比例μ,可计算出网络中总的社区间度数为Kout=(1-μ)×K。
最后,将所有节点的所有度进行编号,并随机排序形成一个度序列,再随机抽取其中的Kout个度设置为社区间的度,并更新节点序列Nodes中的kin和kout,便得到随机的、符合网络参数社区内的度占总度数的比例μ的节点序列Nodes。
步骤S4,生成社区,确定每个社区的节点数,并将节点分配到社区,其步骤为:
首先,建立社区序列Communities(i,n|0≤i≤C-1,Ci≤n≤Ca),i为社区序号,n为社区拥有的节点数;
然后,确定每个社区的节点数;
最后,根据每个社区的节点数,将节点随机分配到各个社区。
确定每个社区的节点数的步骤为:
首先,随机给每个社区分配Ci个节点数,则剩下未分配的节点数为
remain_n=N-C×Ci;
然后,在5~remain_n/2范围内随机生成一个待分配节点数,随机分配到任一社区,并检查分配后的社区中节点总数是否超过Ca,若超过则重新随机取未分配节点数,重新随机分配到任一社区,同时更新remain_n,重复该操作,直至所有节点数被成功分配到社区;
最后,更新社区序列中的节点数字段n。
将节点随机分配到各个社区时,为了避免某个节点的社区内度值大于社区总节点数,应从社区内度值最大的节点开始分配,分配成功后更新节点序列的c字段为其所属社区序号。
步骤S5,生成社区内连边,首先建立一个连边序列
Edges(n1,n2,c1,c2|n1,n2∈Nodes,c1,c2∈Communities),其中n1和n2表示该连边的两个节点,c1和c2分别表示两个节点来自的社区,显然,当c1与c2相等时,表示该连边为社区内连边,反之则为社区间连边。在以后的步骤中,建立新的连边、修改已有连边、删除连边以及查询连边的操作都在连边序列Edges中进行。
然后,对每个社区分别进行四轮连边:
第一轮连边:遍历该社区全部节点,得到该社区全部社区内的度的总数,记为ckin,根据预设网络结构参数社区内连边专找能形成三角形模体的比例m,随机抽取该社区节点中ckin×(1-m)个社区内的度,进行随机连接,形成ckin×(1-m)/2条连边;这里的连边须连接社区内两个之前未曾连接过的节点,即不能是某个节点的自连环,也不能有重复连边。
第二轮连边:对于社区内剩余的ckin×m个度,专找能形成三角形模体的节点建立连边;具体方法为,在社区内随机找一个节点,找出与之已建立连边的邻居节点,在这些邻居节点中找到两个尚未建立链接的节点,去建立新的连边;然后重复这个过程,直到剩余的未连接的社区内的度都已用完,或者再也找不到那样的两个节点为止。
第三轮连边:前面两轮建立连边的操作都是随机的,因此可能会存在因不满足某些条件而未能建立连边的节点和剩余的社区内的度;本轮连边就是遍历社区内的节点,找出剩余未建立连边的社区内的度和节点,在保证不会形成直连环和重复边的情况下,进行随机连接,尽可能地建立连边;最后如果还有极少量未能使用的社区内的度,则更新节点序列Nodes,将其去掉。
第四轮连边:一个社区一定是一个连通图,在网络密度较低或者社区内的度占总度数的比例较小时,经过前面三轮的随机建立连边之后,得到的社区可能是个非连通图;本轮连边就是要检查社区内连边的情况,如果发现是非连通图,则将各个子图随机添加一条边连接到另一子图的任一节点上,使得各个子图连接在一起,使整个社区为一个连通图。
步骤S6,生成社区间连边,具体分为两轮连边:
第一轮连边:遍历所有社区所有节点,找出所有的社区间的度,然后随机建立连接。这里新建连边须要满足的条件是:不能是自连环,不能是重复连边,两个节点不能是来自同一社区。
第二轮连边:整个网络是一个连通图,在网络密度较低或者社区内的度占总度数的比例极大时,经过前面第一轮的随机连边后,可能存在孤立社区,得到的网络可能不是一个连通图,本轮连边就是要避免这种情况。但若是在整个网络中去检测非连通子图情况,会极大地增加计算复杂度。然而,网络中的社区数相对于网络规模来说是极小数,即使增加少量社区间连边,也不会对网络整体结构特征产生较大影响。因此,本轮连边采取最简单有效的做法就是按照随机顺序将各个社区串连起来。具体就是在相邻两个社区中随机选择一对节点建立一条连边(前提是不能是重复连边),这样就保证了最后得到的网络一定是连通图。
步骤S7,更新相关字段,是由于在建立连边的过程中,为了消除误差或者保证网络的连通性等原因,会对个别节点的度值或者连边进行调整,为了使最终的网络各项数据更加精确,需要对相关数据进行重新统计,更新节点、社区和连边序列相关字段,再导出网络数据,具体包括:
首先,根据节点序列Nodes、社区序列Communities以及连边序列Edges的最终数据,重新统计网络中的社区内边数、社区间边数、节点的社区内度和社区间度值,更新相关字段;
然后,按照应用需要的格式,导出网络拓扑结构统计数据,节点序列,社区序列以及连边序列的数据。
本实施例1提供的一种参数可调的无标度网络生成方法,可以根据网络特性灵活调整参数来构建不同的网络,可生成网络的拓扑结构更加丰富,更接近真实网络;所采用的技术方法充分兼顾效率与效果,整体运算复杂度较低,能够适用于生成较大规模的网络;技术方案步骤清晰,目标分明,可扩展性强,例如在步骤S2中,可将生成幂率分布的度序列改造为生成指数分布的度序列,即可生成指数分布特性的网络;技术原理容易理解,可以通过Python及Networkx库快速开发实现。
实施例2
如图1所示,本实施例2是一种参数可调的无标度网络生成方法,其流程如图1所示,具体包括七个步骤:
S1:设置基本网络拓扑结构参数;
S2:然后生成符合幂率分布的度序列;
S3:然后将度序列分为社区内的度和社区间的度;
S4:生成社区,确定每个社区的节点数,并将节点分配到社区;
S5:生成社区内连边;
S6:生成社区间连边;
S7:重新统计网络数据,更新节点、边以及社区三个对象的相关字段,导出网络数据。
步骤S1,需要设置的基本网络拓扑结构参数具体包括:
N:总节点数,即网络规模
C:社区总数
D:网络密度,结合总节点数,可计算出网络的总边数
γ:度分布幂指数
Ki:节点的最小度数
Ka:节点的最大度数
Ci:社区最小节点数
Ca:社区最大节点数
μ:社区内的度占总度数的比例(用于调控网络模块度)
m:社区内连边专找能形成三角形模体的比例(用于调控网络聚集系数)
根据以上设置的基本参数,按照下列公式便可计算出网络的总节点度数K和总边数E:
K=D×N×(N-1)
其中,K为整数,且为偶数。
在实际实施过程中,度分布幂指数γ可按照大多数具有无标度特性的真实网络的统计规律取值为2~3。用于调控网络模块度的参数——社区内的度占总度数的比例μ,取值越大,社区紧密程度越明显,网络的模块度越大。用于调控网络聚集系数的参数——社区内连边专找能形成三角形模体的比例m,并非其取值越大,则网络聚集系数越大,其最终效果与网络密度参数D有较大关系,具体原因在步骤S5中会进行详细说明。
总之,网络参数的设置主要是根据希望生成的真实网络对象来估计各参数具体数值,在实际操作时,可多参照已知的真实网络的统计规律,网络上也有大量来自多个领域的数据可供参考。
步骤S2,生成符合幂率分布的度序列,幂率分布的数学公式为:
p(k)=ak-γ
或
p(k)∝k-γ
其中p(k)表示在网络中随机选择一个节点,其度数为k的概率,γ为度值呈幂率分布时的幂指数,a为比例常数,其值由网络密度D以及节点的最小、最大度值Ki、Ka决定。
假设a取值为1,根据网络基本结构参数γ、Ki及Ka,便可得到由所有可取得的度值的节点度序列p1(k,pk|Ki≤k≤Ka),pk为节点度值为k的概率。
节点数为整数,因此,在上述计算过程中,难免会因将小数取整而导致误差,使得在度序列p2中的节点总数与网络总节点数之间存在误差为了不影响网络规模,需要消除此误差,将误差的节点数全部在度值最小的节点上进行修正,即修正后更新度序列p2;由于网络节点的度值呈幂率分布,度值最小的节点数量最多,这样处理误差不会对整体度分布特征造成较大影响。
取得a的之后,按比例计算新的度值k'=a×k,取整后更新到度序列p2中,然后再计算节点总度数的误差εk=K-Σk×nk,为了不影响网络密度,需要消除此误差,将误差的度数全部加在度值最大的一个节点上进行修正,由于幂率的特点,较大的度值远大于较小的度值,这样处理误差不会对整体度分布特征造成较大影响,由此得到最终符合网络结构参数的度序列p3(k,pk,nk|Ki≤k≤Ka)。
学界实证研究发现,绝大多数真实网络的度分布,都近似地遵从幂函数的形式,具有无标度特性。因此,在复杂网络领域对无标度网络的研究和应用最为广泛。但是,网络的度分布是多种多样的,也发现有一些真实网络的度分布呈指数分布或者其它函数分布。在步骤S2中,以什么样的函数形式生成度序列,决定了最终网络的度分布特征。因此,可以在该步骤中根据情况进行改造,以符合实际需要。
步骤S3,将度序列分为社区内的度和社区间的度,其步骤为:
首先,将节点按照度值从小到大排成一个节点序列
Nodes(i,k,kin,kout,c|0≤i≤N-1,Ki≤k≤Ka,kin+kout=k),i为节点序号,k为节点度值,kin和kout分别表示属于社区内的度值和属于社区间的度值,初始设置kin为k,kout为0,c为节点所属社区,初始值为0。
然后,根据节点总度数K和社区内的度占总度数的比例μ,可计算出网络中总的社区间度数为Kout=(1-μ)×K。
最后,将所有节点的所有度进行编号,并随机排序形成一个度序列,再随机抽取其中的Kout个度设置为社区间的度,并更新节点序列Nodes中的kin和kout,便得到随机的、符合网络参数社区内的度占总度数的比例μ的节点序列Nodes。
步骤S4,生成社区,确定每个社区的节点数,并将节点分配到社区,如图2所示,其步骤为:
首先,建立社区序列Communities(i,n|0≤i≤C-1,Ci≤n≤Ca),i为社区序号,n为社区拥有的节点数;
然后,确定每个社区的节点数(在Ci与Ca之间);
最后,根据每个社区的节点数,将节点随机分配到各个社区。
其中,确定每个社区的节点数的具体步骤为:
首先,随机给每个社区分配Ci个节点数(这样就符合了初始设置规定的社区最小节点数要求),则剩下未分配的节点数为remain_n=N-C×Ci;
然后,在5~remain_n/2范围内随机生成一个待分配节点数(这里之所以设最小分配数为5是为了加快分配效率),随机分配到任一社区,并检查分配后的社区中节点总数是否超过Ca,若超过则重新随机取未分配节点数,重新随机分配到任一社区,同时更新remain_n,重复该操作,直至所有节点数被成功分配到社区;如果到后面还剩小于5个未分配节点数,则直接随机分配给任意社区即可;
最后,更新社区序列中的节点数字段n。
另外,将节点随机分配到各个社区时,为了避免某个节点的社区内度值大于社区总节点数,应从社区内度值最大的节点开始分配,并确认该节点的社区内度值小于选中社区的总节点数,否则重新选择社区。节点分配成功后更新节点序列Nodes的c字段为其所属社区序号。由于在步骤S3建立节点序列Nodes时是按照度值从小到大排列的,所以这里只需逆序选取待分配节点即可。
步骤S5,生成社区内连边,首先建立一个连边序列
Edges(n1,n2,c1,c2|n1,n2∈Nodes,c1,c2∈Communities),其中n1和n2表示该连边的两个节点,c1和c2分别表示两个节点来自的社区,显然,当c1与c2相等时,表示该连边为社区内连边,反之则为社区间连边。在以后的步骤中,建立新的连边、修改已有连边、删除连边以及查询连边的操作都在连边序列Edges中进行。
然后,对每个社区分别进行四轮连边:
第一轮连边:遍历该社区全部节点,得到该社区全部社区内的度的总数,记为ckin,根据预设网络结构参数社区内连边专找能形成三角形模体的比例m,随机抽取该社区节点中ckin×(1-m)个社区内的度,进行随机连接,形成ckin×(1-m)/2条连边;这里的连边须连接社区内两个之前未曾连接过的节点,即不能是某个节点的自连环,也不能有重复连边。
第二轮连边:对于社区内剩余的ckin×m个度,专找能形成三角形模体的节点建立连边;具体方法为,在社区内随机找一个节点,找出与之已建立连边的邻居节点,在这些邻居节点中找到两个尚未建立链接的节点,去建立新的连边;然后重复这个过程,直到剩余的未连接的社区内的度都已用完,或者再也找不到那样的两个节点为止。
第三轮连边:前面两轮建立连边的操作都是随机的,因此可能会存在因不满足某些条件而未能建立连边的节点和剩余的社区内的度;本轮连边就是遍历社区内的节点,找出剩余未建立连边的社区内的度和节点,在保证不会形成直连环和重复边的情况下,进行随机连接,尽可能地建立连边;最后如果还有极少量未能使用的社区内的度,则更新节点序列Nodes,将其去掉。
第四轮连边:一个社区一定是一个连通图,在网络密度较低或者社区内的度占总度数的比例较小时,经过前面三轮的随机建立连边之后,得到的社区可能是个非连通图;本轮连边就是要检查社区内连边的情况,如果发现是非连通图,则将各个子图随机添加一条边连接到另一子图的任一节点上,使得各个子图连接在一起,使整个社区为一个连通图。
从第一轮和第二轮连边可以看出,网络的模块度与预设网络结构参数社区内连边专找能形成三角形模体的比例m密切相关,但并不完全是m取值越大,能形成的三角形模体就越多,进而网络的模块度就越大。因为这里有个前提,就是在第一轮连边结束后,在第二轮连边时能够找到足够的Λ形模体,即只差一条边就能形成三角形的模体。如果网络密度D取值较小,网络中的边数也会相对较少,而社区内的度占比较低,即μ取值较小,此时若m取值较大,则在第一轮建立的连边会非常稀疏,可能出现较多分散的子图,导致在第二轮连边时找不到足够的Λ形模体,浪费了连边的机会,最后全转到第三轮去随机连边,导致网络的模块度反而不高。遇到这种情况时,如果m取值稍小一点,则第一轮连边后可能出现更多的Λ形模体,在第二轮连边时便可充分利用,形成更多的三角形,最后网络的模块度可能会更大。因此,在调控网络模块度时,需要同时结合网络密度参数D、社区内的度占比参数μ和社区内连边专找能形成三角形模体的比例参数m三个参数一起来综合考虑,具体实施时,可以多取几个m的值调试一下效果。
步骤S6,生成社区间连边,具体分为两轮连边:
第一轮连边:遍历所有社区所有节点,找出所有的社区间的度,然后随机建立连接。这里新建连边须要满足的条件是:不能是自连环,不能是重复连边,两个节点不能是来自同一社区。
第二轮连边:整个网络是一个连通图,在网络密度较低或者社区内的度占总度数的比例极大时,经过前面第一轮的随机连边后,可能存在孤立社区,得到的网络可能不是一个连通图,本轮连边就是要避免这种情况。但若是在整个网络中去检测非连通子图情况,会极大地增加计算复杂度。然而,网络中的社区数相对于网络规模来说是极小数,即使增加少量社区间连边,也不会对网络整体结构特征产生较大影响。因此,本轮连边采取最简单有效的做法就是按照随机顺序将各个社区串连起来。具体就是在相邻两个社区中随机选择一对节点建立一条连边(前提是不能是重复连边),这样就保证了最后得到的网络一定是连通图。
步骤S7,更新相关字段,是由于在建立连边的过程中,为了消除误差或者保证网络的连通性等原因,会对个别节点的度值或者连边进行调整,为了使最终的网络各项数据更加精确,需要对相关数据进行重新统计,更新节点、社区和连边序列相关字段,再按具体实施时的需求导出网络数据,具体包括:
首先,根据节点序列Nodes、社区序列Communities以及连边序列Edges的最终数据,重新统计网络中的社区内边数、社区间边数、节点的社区内度和社区间度值,更新序列中的相关字段;
然后,按照应用需要的格式,导出网络拓扑结构统计数据,节点序列,社区序列以及连边序列的数据,通常为文本格式或CSV格式文件。若实际需要,也可将模块度、聚集系数等网络结构特征计算出来一并导出。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种参数可调的无标度网络生成方法,其特征在于,包括以下步骤:
S1:设置基本网络拓扑结构参数,所述基本网络拓扑结构参数包括:
N:总节点数;Ki:节点的最小度数;Ka:节点的最大度数;C:社区总数;Ci:社区最小节点数;Ca:社区最大节点数;k:节点度值;
S2:根据所述基本网络拓扑结构参数,生成符合幂率分布的度序列;
S3:将所述度序列分为社区内的度和社区间的度,将节点按照度值从小到大排成节点序列,节点序列为Nodes(i,k,kin,kout,c|0≤i≤N-1,Ki≤k≤Ka,kin+kout=k)
其中,i为节点序号,kin表示社区内的度值,kout分别表示社区间的度值,kin的初始值为k,kout的初始值为0,c为节点所属社区,c的初始值为0;
S4:生成社区,确定每个社区的节点数,并将节点分配到社区,建立社区序列
Communities(i,n|0≤i≤C-1,Ci≤n≤Ca)
其中,i为社区序号,n为社区拥有的节点数,确定每个社区的节点数,根据所述每个社区的节点数,将节点随机分配到各个社区;
S5:生成社区内连边和社区间连边,建立一个连边序列
Edges(n1,n2,c1,c2|n1,n2∈Nodes,c1,c2∈Communities)
其中,n1和n2表示该连边的两个节点,c1表示节点n1来自的社区,c2表示节点n2来自的社区;
S6:更新节点、连边、社区和三者之间的相关参数,重新统计网络数据并导出。
3.根据权利要求1所述参数可调的无标度网络生成方法,其特征在于,所述幂率分布如下:
p(k)=ak-γ或p(k)∝k-γ
其中p(k)表示在网络中随机一个节点度值为k的概率,γ为度值呈幂率分布时的幂指数,a为比例常数;
所述符合幂率分布的度序列如下:
p(k,pk,nk|Ki≤k≤Ka)
其中,pk为节点度值为k的概率,nk为度值为k的节点数。
4.根据权利要求1所述参数可调的无标度网络生成方法,其特征在于,网络中总的社区间的度数为Kout=(1-μ)×K;
其中,K为网络总节点度数,K为整数且为偶数;
将所有节点的所有度进行编号,并随机排序形成一个度序列,再随机抽取其中的Kout个度设置为社区间的度,并更新节点序列Nodes中的kin和kout,便得到随机的、符合网络参数社区内的度占总度数的比例μ的节点序列Nodes,μ表示社区内的度占总度数的比例。
5.根据权利要求1所述参数可调的无标度网络生成方法,其特征在于,所述步骤S4中包括以下子步骤:
S41:随机给每个社区分配Ci个节点数,则剩下未分配的节点数为remain_n=N-C×Ci;
S42:在5~remain_n/2范围内随机生成一个待分配节点数,随机分配到任意一个社区,并检查分配后的社区中节点总数是否超过Ca,若超过则重新随机选取未分配节点数,重新随机分配到任意一个社区,同时更新remain_n,重复该操作,直至所有节点数被成功分配到社区;
S43:更新社区序列中的节点数n。
6.根据权利要求5所述参数可调的无标度网络生成方法,其特征在于,将节点随机分配到各个社区时,从社区内度值最大的节点开始分配,分配成功后更新节点序列的c字段为其所属社区序号。
7.根据权利要求1所述参数可调的无标度网络生成方法,其特征在于,当c1与c2相等时,表示该连边为社区内连边;当c1与c2不相等时,表示该连边为社区间连边;建立新的连边、修改已有连边、删除连边以及查询连边的操作都在连边序列Edges中进行。
8.根据权利要求7所述参数可调的无标度网络生成方法,其特征在于,所述生成社区内连边包括对每个社区分别进行四轮连边,具体如下:
第A1轮连边:遍历社区全部节点,得到社区全部社区内的度的总数,记为ckin,根据预设网络结构参数社区内连边专找能形成三角形模体的比例m,随机抽取该社区节点中ckin×(1-m)个社区内的度,进行随机连接,形成ckin×(1-m)/2条连边;这里的连边须连接社区内两个之前未曾连接过的节点,即不能是某个节点的自连环,也不能有重复连边;
第A2轮连边:对于社区内剩余的ckin×m个度,专找能形成三角形模体的节点建立连边;在社区内随机找一个节点,找出与之已建立连边的邻居节点,在这些邻居节点中找到两个尚未建立链接的节点,建立新的连边;重复这个过程,直到剩余的未连接的社区内的度都已用完,或者再也找不到尚未建立链接的两个节点为止;
第A3轮连边:遍历社区内的节点,找出剩余未建立连边的社区内的度和节点,在保证不会形成直连环和重复边的情况下,进行随机连接,尽可能地建立连边;若还有极少量未能使用的社区内的度,则更新节点序列Nodes,将其去掉;
第A4轮连边:检查社区内连边的情况,若是非连通图,则将各个子图随机添加一条边连接到另一子图的任一节点上。
9.根据权利要求7所述参数可调的无标度网络生成方法,其特征在于,所述生成社区间连边,包括两轮连边:
第B1轮连边:遍历所有社区所有节点,找出所有的社区间的度,然后随机建立连接;建立连接需要满足的条件是:不能是自连环,不能是重复连边,两个节点不能是来自同一社区;
第B2轮连边:依次随机选出社区,在相邻两个社区中随机选择一对节点建立一条连边,且此条连边不是重复的。
10.根据权利要求1所述参数可调的无标度网络生成方法,其特征在于,所述步骤S6具体包括:根据节点序列Nodes、社区序列Communities以及连边序列Edges的最终数据,重新统计网络中的社区内边数、社区间边数、节点的社区内度和社区间度值,更新相关字段;按照应用需要的格式,导出网络拓扑结构统计数据,节点序列,社区序列以及连边序列的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010488396.4A CN111651683A (zh) | 2020-06-02 | 2020-06-02 | 一种参数可调的无标度网络生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010488396.4A CN111651683A (zh) | 2020-06-02 | 2020-06-02 | 一种参数可调的无标度网络生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111651683A true CN111651683A (zh) | 2020-09-11 |
Family
ID=72347009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010488396.4A Pending CN111651683A (zh) | 2020-06-02 | 2020-06-02 | 一种参数可调的无标度网络生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111651683A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113660116A (zh) * | 2021-07-29 | 2021-11-16 | 西安电子科技大学 | 一种弱连通有向无环无标度网络生成方法 |
CN115695205A (zh) * | 2022-10-31 | 2023-02-03 | 上海浦东发展银行股份有限公司 | 一种拓扑网络结构优化方法、装置、设备和存储介质 |
-
2020
- 2020-06-02 CN CN202010488396.4A patent/CN111651683A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113660116A (zh) * | 2021-07-29 | 2021-11-16 | 西安电子科技大学 | 一种弱连通有向无环无标度网络生成方法 |
CN113660116B (zh) * | 2021-07-29 | 2022-07-26 | 西安电子科技大学 | 一种弱连通有向无环无标度网络生成方法 |
CN115695205A (zh) * | 2022-10-31 | 2023-02-03 | 上海浦东发展银行股份有限公司 | 一种拓扑网络结构优化方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ulanowicz et al. | Ecosystem flow networks: loaded dice? | |
Zhang et al. | Mapping Koch curves into scale-free small-world networks | |
CN108090197B (zh) | 一种多维社交网络的社区发现方法 | |
Sun et al. | Scaling of the average receiving time on a family of weighted hierarchical networks | |
CN112364908A (zh) | 一种面向决策树的纵向联邦学习方法 | |
CN111651683A (zh) | 一种参数可调的无标度网络生成方法 | |
Wu et al. | Bridges in complex networks | |
Chen et al. | PageRank in scale-free random graphs | |
CN111488981A (zh) | 基于高斯分布估计选取深度网络参数稀疏阈值的方法 | |
Niu et al. | The asymptotic formula on average weighted path length for scale-free modular network | |
Matache et al. | Random Boolean network model exhibiting deterministic chaos | |
Zhang et al. | Structural analysis and the sum of nodes’ betweenness centrality in complex networks | |
Zhang et al. | Transition from fractal to non-fractal scalings in growing scale-free networks | |
CN111552844B (zh) | 一种求解大规模多段图最短路径的分布式方法 | |
Huang et al. | A primal decomposition approach to globally coupled aggregative optimization over networks | |
Zhang et al. | A geometric growth model interpolating between regular and small-world networks | |
Provata et al. | Coupled intermittent maps modeling the statistics of genomic sequences: A network approach | |
Markovich et al. | Investigation of triangle counts in graphs evolved by uniform clustering attachment | |
Konno et al. | Rigorous results on the threshold network model | |
CN113824802B (zh) | 一种去中心化分布式训练拓扑结构、训练系统及方法 | |
Strasser et al. | Convergence of factored evolutionary algorithms | |
CN109902728A (zh) | 一种基于平均互信息的快速社区发现方法及系统 | |
CN111464343B (zh) | 一种基于平均互信息的最大派系贪心扩展社区发现方法及系统 | |
CN115018085B (zh) | 一种面向数据异构性的联邦学习参与设备选择方法 | |
CN116684273B (zh) | 一种基于粒子群的机动通信网络结构自动规划方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200911 |