发明名称 一种基于矩阵运算的复杂网络构建方法
摘要 本发明公开了一种基于矩阵运算的复杂网络构建方法,基于多个生成网络邻接矩阵的Kronecker和运算及Kronecker积运算进行复杂网络构建,其主要步骤包括确定生成网络集合、计算生成网络邻接矩阵集合、计算生成网络度分布多项式集合、计算复杂网络的邻接矩阵、计算复杂网络的度分布多项式等。采用本发明得到的复杂网络不同于经典的随机网络、小世界网络、无标度网络及自相似网络等其他网络。而且,采用度分布多项式表述方法,对Kronecker和运算采用通常多项式乘法的次数相乘及系数相加的运算,并对Kronecker积运算采用类似多项式乘法的次数相乘及系数相乘的运算可以从理论上严格计算出此类复杂网络的度分布。特别的,基于多个生成网络邻接矩阵的Kronecker和运算可以得到随机网络。
申请公布号 CN104361161A 申请公布日期 2015.02.18
申请号 CN201410603864.2 申请日期 2014.10.31
申请人 西南交通大学 发明人 李天瑞;刘胜久;珠杰;王红军
分类号 G06F17/50(2006.01)I 主分类号 G06F17/50(2006.01)I
代理机构 成都信博专利代理有限责任公司 51200 代理人 张澎
主权项 一种基于矩阵运算的复杂网络构建方法,通过确定生成网络集合、计算生成网络邻接矩阵集合、计算生成网络度分布多项式集合、计算复杂网络的邻接矩阵、计算复杂网络的度分布多项式构建复杂网络,包括如下步骤:(1)确定生成网络集合U<sub>G</sub>={G<sub>1</sub>,G<sub>2</sub>,G<sub>3</sub>,…,G<sub>i</sub>,…};(2)计算生成网络集合U<sub>G</sub>中所有网络G<sub>i</sub>的邻接矩阵A(G<sub>i</sub>),得到生成网络集合U<sub>G</sub>的邻接矩阵集合U<sub>A(G)</sub>={A(G<sub>1</sub>),A(G<sub>2</sub>),A(G<sub>3</sub>),…,A(G<sub>i</sub>),…}:在生成网络集合U<sub>G</sub>中,对于任一具有n个节点的生成网络G,其邻接矩阵A(G)是n×n的方阵,其中对于方阵中的每一个数据,若节点i与节点j相邻,则有A(G)(i,j)=1,否则,A(G)(i,j)=0;若生成网络G的链路数为m,则邻接矩阵A(G)中1的个数也为m,且生成网络的网络密度<img file="FDA0000598320390000011.GIF" wi="395" he="142" />(3)计算生成网络集合U<sub>G</sub>中所有网络G<sub>i</sub>的度分布,得到生成网络集合U<sub>G</sub>的度分布多项式集合U<sub>Poly(G)</sub>={Poly(G<sub>1</sub>),Poly(G<sub>2</sub>),Poly(G<sub>3</sub>),…,Poly(G<sub>i</sub>),…}:在生成网络集合U<sub>G</sub>中,对于任一具有n个节点的生成网络G,其度分布多项式表达形式Poly(G)可表述如下:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>Poly</mi><mrow><mo>(</mo><mi>G</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msup><mi>x</mi><msub><mi>D</mi><mi>i</mi></msub></msup><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mo>&infin;</mo></munderover><msub><mi>N</mi><mi>j</mi></msub><msup><mi>x</mi><mi>j</mi></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000598320390000012.GIF" wi="1246" he="143" /></maths>其中,n为节点数目,D<sub>i</sub>表示第i个节点的度,N<sub>j</sub>表示度为j的节点的数目;(4)从生成网络集合中顺次选取k个生成网络G<sub>(1)</sub>、G<sub>(2)</sub>、G<sub>(3)</sub>、…、G<sub>(k-1)</sub>、G<sub>(k)</sub>,允许重复选取,对基于前i个生成网络得到复杂网络的邻接矩阵A<sup>(i)</sup>(G<sup>(i)</sup>)及第i+1个生成网络对应的邻接矩阵A(G<sub>(i+1)</sub>)采用Kronecker和运算或Kronecker积运算构建基于前i+1个生成网络得到的复杂网络的邻接矩阵,记为A<sup>(i+1)</sup>(G<sup>(i+1)</sup>),其中,i表示构建复杂网络所使用的生成网络数目,A<sup>(i)</sup>(G<sup>(i)</sup>)表示i个生成网络对应的邻接矩阵顺次进行Kronecker和运算和/或Kronecker积运算后得到的一个新的复杂网络的邻接矩阵:若矩阵A<sup>(j)</sup>(G<sup>(j)</sup>)与A(G<sub>(j+1)</sub>)采用Kronecker和运算进行运算,则有:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msup><mi>A</mi><mrow><mo>(</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msup><mrow><mo>(</mo><msup><mi>G</mi><mrow><mo>(</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msup><mo>)</mo></mrow><mo>=</mo><msup><mi>A</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msup><mrow><mo>(</mo><msup><mi>G</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msup><mo>)</mo></mrow><mo>&CirclePlus;</mo><mi>A</mi><mrow><mo>(</mo><msub><mi>G</mi><mrow><mo>(</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msub><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000598320390000021.GIF" wi="1347" he="94" /></maths>若矩阵A<sup>(j)</sup>(G<sup>(j)</sup>)与A(G<sub>(j+1)</sub>)采用Kronecker积运算进行运算,则有:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msup><mi>A</mi><mrow><mo>(</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msup><mrow><mo>(</mo><msup><mi>G</mi><mrow><mo>(</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msup><mo>)</mo></mrow><mo>=</mo><msup><mi>A</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msup><mrow><mo>(</mo><msup><mi>G</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msup><mo>)</mo></mrow><mo>&CircleTimes;</mo><mi>A</mi><mrow><mo>(</mo><msub><mi>G</mi><mrow><mo>(</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msub><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000598320390000022.GIF" wi="1405" he="102" /></maths>其中,矩阵A(a<sub>ij</sub>)<sub>m×m</sub>及矩阵B(b<sub>ij</sub>)<sub>n×n</sub>的Kronecker和<img file="FDA0000598320390000023.GIF" wi="279" he="77" />定义如下:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msub><mi>A</mi><mrow><mi>m</mi><mo>&times;</mo><mi>m</mi></mrow></msub><mo>&CirclePlus;</mo><msub><mi>B</mi><mrow><mi>n</mi><mo>&times;</mo><mi>n</mi></mrow></msub><mo>=</mo><msub><mi>A</mi><mrow><mi>m</mi><mo>&times;</mo><mi>m</mi></mrow></msub><mo>&CircleTimes;</mo><msub><mi>I</mi><mrow><mi>n</mi><mo>&times;</mo><mi>n</mi></mrow></msub><mo>+</mo><msub><mi>I</mi><mrow><mi>m</mi><mo>&times;</mo><mi>m</mi></mrow></msub><mo>&CircleTimes;</mo><msub><mi>B</mi><mrow><mi>n</mi><mo>&times;</mo><mi>n</mi></mrow></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000598320390000024.GIF" wi="1414" he="78" /></maths>其中,I<sub>n×n</sub>表示n×n单位矩阵,<img file="FDA0000598320390000025.GIF" wi="54" he="61" />表示Kronecker和运算,<img file="FDA0000598320390000026.GIF" wi="58" he="61" />表示Kronecker积运算,可以看出Kronecker和运算需要用到Kronecker积运算;对任意矩阵P<sub>p×p</sub>与矩阵Q<sub>q×q</sub>而言,其Kronecker乘积<img file="FDA0000598320390000027.GIF" wi="268" he="87" />定义如下:<img file="FDA0000598320390000028.GIF" wi="1966" he="540" />为方便书写,采用此方法顺次选取k个生成网络G<sub>(1)</sub>、G<sub>(2)</sub>、G<sub>(3)</sub>、…、G<sub>(k</sub><sub>-1)</sub>、G<sub>(k)</sub>而得到的复杂网络G<sup>(k)</sup>可以记为如下形式:G(k)=G<sub>(1)</sub>⊙G<sub>(2)</sub>⊙G<sub>(3)</sub>…G<sub>(k‑1)</sub>⊙G<sub>(k)</sub>    (6)其中,⊙表示<img file="FDA00005983203900000211.GIF" wi="48" he="61" />或<img file="FDA00005983203900000212.GIF" wi="80" he="66" />特别的,在特殊情况下,若只采用一种运算,则有:基于k个生成网络G的Kronecker积运算而得到的复杂网络可以记为:<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mi>G</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&CircleTimes;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>k</mi></munderover><msub><mi>G</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></msub><mrow><mo>(</mo><mi>i</mi><mo>=</mo><mn>1,2,3</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>k</mi><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA00005983203900000213.GIF" wi="1269" he="118" /></maths>基于k个生成网络G的Kronecker和运算而得到的复杂网络可以记为:<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><mi>G</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&CirclePlus;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>k</mi></munderover><msub><mi>G</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></msub><mrow><mo>(</mo><mi>i</mi><mo>=</mo><mn>1,2,3</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>k</mi><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000598320390000031.GIF" wi="1248" he="117" /></maths>(5)按照如下方法计算所构建的新的复杂网络的度分布PolyDD(G<sup>(l)</sup>),其中,l代表运算的次数,PolyDD(G<sup>(l)</sup>)代表l个生成网络对应的邻接矩阵顺次进行运算后得到的新的复杂网络度分布多项式:若矩阵A<sup>(j)</sup>(G<sup>(j)</sup>)与A(G<sub>(j+1)</sub>)采用Kronecker和运算进行运算,则有:<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><mfenced open='' close=''><mtable><mtr><mtd><mi>PolyDD</mi><mrow><mo>(</mo><msup><mi>G</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msup><mo>)</mo></mrow><mo>=</mo><mi>KronSum</mi><mrow><mo>(</mo><mi>Poly</mi><msup><mi>G</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msup><mo>)</mo></mrow><mi>Poly</mi><mrow><mrow><mo>(</mo><msub><mi>G</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msub><mo>)</mo></mrow><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mo>=</mo><mi>KronSum</mi><mrow><mo>(</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mo>&infin;</mo></munderover><msubsup><mi>N</mi><mi>i</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><msup><mi>x</mi><mi>i</mi></msup><mo>,</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mo>&infin;</mo></munderover><msub><mi>N</mi><mrow><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mi>j</mi></mrow></msub><msup><mi>x</mi><mi>j</mi></msup><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mo>&infin;</mo></munderover><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mo>&infin;</mo></munderover><msubsup><mi>N</mi><mi>i</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><msub><mi>N</mi><mrow><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mi>j</mi></mrow></msub><msup><mi>x</mi><mrow><mi>i</mi><mo>+</mo><mi>j</mi></mrow></msup><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>=</mo><mn>1,2,3</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000598320390000032.GIF" wi="1686" he="399" /></maths>若矩阵A<sup>(j)</sup>(G<sup>(j)</sup>)与A(G<sub>(j+1)</sub>)采用Kronecker积运算进行运算,则有:<maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><mfenced open='' close=''><mtable><mtr><mtd><mi>PolyDD</mi><mrow><mo>(</mo><msup><mi>G</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msup><mo>)</mo></mrow><mo>=</mo><mi>KronPro</mi><mrow><mo>(</mo><mi>Poly</mi><msup><mi>G</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msup><mo>)</mo></mrow><mi>Poly</mi><mrow><mrow><mo>(</mo><msub><mi>G</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msub><mo>)</mo></mrow><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mo>=</mo><mi>KronPro</mi><mrow><mo>(</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mo>&infin;</mo></munderover><msubsup><mi>N</mi><mi>i</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><msup><mi>x</mi><mi>i</mi></msup><mo>,</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mo>&infin;</mo></munderover><msub><mi>N</mi><mrow><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mi>j</mi></mrow></msub><msup><mi>x</mi><mi>j</mi></msup><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mo>&infin;</mo></munderover><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mo>&infin;</mo></munderover><msubsup><mi>N</mi><mi>i</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><msub><mi>N</mi><mrow><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mi>j</mi></mrow></msub><msup><mi>x</mi><mrow><mi>i</mi><mi>j</mi></mrow></msup><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>=</mo><mn>1,2,3</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>;</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000598320390000033.GIF" wi="1643" he="413" /></maths>(6)重复步骤(4)及步骤(5),得到指定节点数目、指定链路数目或指定生成网络数目的复杂网络时,终止操作。
地址 610031 四川省成都市二环路北一段111号西南交通大学科技处