发明名称 基于核节点和社区融合策略的网络社区划分方法
摘要 本发明公开了一种基于核节点和社区融合策略的网络社区划分方法,主要解决现有社区融合算法中目标函数本身存在的分辨率问题。其实现步骤是:1)读入一幅网络图S,并生成网络图S对应的邻接矩阵A;2)根据邻接矩阵A计算网络中每个节点的节点度,并查找网络核节点集合C;3)根据相似度函数值F更新网络节点标签集合f′;4)根据网络节点标签集合f′得到网络社区标签集合f;5)基于改进模块密度增量ΔD对当前网络中的社区进行迭代社区融合,输出最终网络节点标签集合f<sub>z</sub>。本发明具有节点信息利用率高和社区分辨率高的优点,可用于社区检测。
申请公布号 CN106301888A 申请公布日期 2017.01.04
申请号 CN201610601198.8 申请日期 2016.07.27
申请人 西安电子科技大学 发明人 尚荣华;张玮桐;焦李成;王蓉芳;马文萍;刘芳;侯彪;王爽;刘红英
分类号 H04L12/24(2006.01)I 主分类号 H04L12/24(2006.01)I
代理机构 陕西电子工业专利中心 61205 代理人 王品华
主权项 一种基于核节点和社区融合策略的网络社区划分方法,包括如下步骤:(1)读入一幅网络图S,并生成网络图S对应的邻接矩阵A;(2)根据邻接矩阵A计算网络中每个节点的节点度,并根据网络中每个节点的节点度查找网络核节点集合C;(3)赋给网络中第i个节点一个唯一的标签i,i∈{1,2,...,n},n表示网络中节点的数目,计算网络核节点集合C中每个核节点与其所有邻居节点的相似度函数值F,选出该函数值F大于等于给定阈值F<sub>t</sub>=1所对应的邻居节点,并将选出的邻居节点的标签更新为与其连接的核节点的标签,得到更新的网络节点标签集合f′={f<sub>1</sub>′,f<sub>2</sub>′,...,f<sub>i</sub>′,...,f<sub>n</sub>′},其中f<sub>i</sub>′表示网络中第i个节点的标签;(4)将网络节点标签集合f′={f<sub>1</sub>′,f<sub>2</sub>′,...,f<sub>i</sub>′,...,f<sub>n</sub>′}中相同标签对应的节点组成一个社区,得到当前网络社区标签集合f(1,1)={f<sub>1</sub>(1,1),f<sub>2</sub>(1,1),...,f<sub>u</sub>(1,1),...,f<sub>h(1)</sub>(1,1)},并记录每个社区中包含的节点,其中,f<sub>u</sub>(1,1)表示当前网络中第u个社区的标签,u∈{1,2,...,h(1)},h(1)表示当前网络中的社区数目;(5)基于改进模块密度增量ΔD对当前网络中的社区进行迭代融合:5a)初始化循环次数g=1;5b)统计当前网络社区标签集合f(g,1)={f<sub>1</sub>(g,1),f<sub>2</sub>(g,1),...,f<sub>u</sub>(g,1),...,f<sub>h(g)</sub>(g,1)}中每个社区与外界的连接数目l<sub>o</sub>(g,1)={l<sub>o1</sub>(g,1),l<sub>o2</sub>(g,1),...,l<sub>ou</sub>(g,1),...,l<sub>oh(g)</sub>(g,1)},其中f<sub>u</sub>(g,1)表示网络中第u个社区在第g次循环时的标签,l<sub>ou</sub>(g,1)表示网络中第u个社区在第g次循环时与外界的连接数目,u∈{1,2,...,h(g)},h(g)表示网络中第g次循环时的社区数目;5c)将当前网络社区标签集合f(g,1)中的社区按与外界的连接数目l<sub>o</sub>(g,1)降序排列,得到一个h(g)行2列的矩阵M(g);5d)初始化社区融合迭代次数t=1;5e)分别统计当前网络社区标签集合f(g,t)中每个社区的节点度之和d(g,t)、社区内节点间的连接数目l<sub>i</sub>(g,t)、社区与外界的连接数目l<sub>o</sub>(g,t)、社区u与其邻居社区v之间的连接数目l<sub>uv</sub>(g,t),其中:f(g,t)={f<sub>1</sub>(g,t),f<sub>2</sub>(g,t),...,f<sub>u</sub>(g,t),...,f<sub>h(g)</sub>(g,t)},f<sub>u</sub>(g,t)表示网络中第u个社区在第g次循环第t次迭代时的标签,d(g,t)={d<sub>1</sub>(g,t),d<sub>2</sub>(g,t),...,d<sub>u</sub>(g,t),...,d<sub>h(g)</sub>(g,t)},d<sub>u</sub>(g,t)表示网络中第u个社区在第g次循环第t次迭代时的节点度之和,l<sub>i</sub>(g,t)={l<sub>i1</sub>(g,t),l<sub>i2</sub>(g,t),...,l<sub>iu</sub>(g,t),...,l<sub>ih(g)</sub>(g,t)},l<sub>iu</sub>(g,t)表示网络中第u个社区在第g次循环第t次迭代时社区内节点间的连接数目,l<sub>o</sub>(g,t)={l<sub>o1</sub>(g,t),l<sub>o2</sub>(g,t),...,l<sub>ou</sub>(g,t),...,l<sub>oh(g)</sub>(g,t)},l<sub>ou</sub>(g,t)表示网络中第u个社区在第g次循环第t次迭代时与外界的连接数目,l<sub>uv</sub>(g,t)={l<sub>uv1</sub>(g,t),l<sub>uv2</sub>(g,t),...,l<sub>uvk(g,t)</sub>(g,t)},l<sub>uv</sub>(g,t)表示网络中第u个社区与其邻居社区v之间在第g次循环第t次迭代时的连接数目,k(g,t)表示网络中第g次循环第t次迭代时相互连接的社区对的数目;5f)计算当前网络中的社区u与其邻居社区v融合后所得的改进模块密度增量ΔD<sub>uv</sub>:<maths num="0001"><math><![CDATA[<mrow><msub><mi>&Delta;D</mi><mrow><mi>u</mi><mi>v</mi></mrow></msub><mo>=</mo><mfrac><mrow><mo>&lsqb;</mo><msub><mi>l</mi><mrow><mi>i</mi><mi>u</mi></mrow></msub><mo>-</mo><msub><mi>l</mi><mrow><mi>o</mi><mi>u</mi></mrow></msub><mo>-</mo><msub><mi>l</mi><mrow><mi>o</mi><mi>v</mi></mrow></msub><mo>+</mo><mn>3</mn><msub><mi>l</mi><mrow><mi>u</mi><mi>v</mi></mrow></msub><mo>&rsqb;</mo></mrow><mrow><msub><mi>d</mi><mi>u</mi></msub><mo>+</mo><msub><mi>d</mi><mi>v</mi></msub></mrow></mfrac><mo>-</mo><mo>&lsqb;</mo><mfrac><mrow><msub><mi>l</mi><mrow><mi>i</mi><mi>u</mi></mrow></msub><mo>-</mo><msub><mi>l</mi><mrow><mi>o</mi><mi>u</mi></mrow></msub></mrow><msub><mi>d</mi><mi>u</mi></msub></mfrac><mo>+</mo><mfrac><mrow><msub><mi>l</mi><mrow><mi>i</mi><mi>v</mi></mrow></msub><mo>-</mo><msub><mi>l</mi><mrow><mi>o</mi><mi>v</mi></mrow></msub></mrow><msub><mi>d</mi><mi>v</mi></msub></mfrac><mo>&rsqb;</mo><mo>,</mo></mrow>]]></math><img file="FDA0001061613740000021.GIF" wi="958" he="150" /></maths>其中,l<sub>iu</sub>表示社区u内节点间的连接数目,l<sub>ou</sub>表示社区u与外界的连接数目,l<sub>ov</sub>表示社区v与外界的连接数目,l<sub>uv</sub>表示社区u与v之间的连接数目,d<sub>u</sub>表示社区u内节点的节点度之和,d<sub>v</sub>表示社区v内节点的节点度之和,l<sub>iv</sub>表示社区v内节点间的连接数目;5g)根据改进模块密度增量ΔD<sub>uv</sub>得到矩阵M(g)中第t个社区p与其所有邻居社区融合所得的p社区融合增量集合ΔD<sub>p</sub>,并找到集合ΔD<sub>p</sub>中的最大值对应的邻居社区q;5h)根据改进模块密度增量ΔD<sub>uv</sub>得到社区q与其所有邻居社区融合所得的q社区融合增量集合ΔD<sub>q</sub>;5i)将p社区融合增量集合ΔD<sub>p</sub>与q社区融合增量集合ΔD<sub>q</sub>进行比较:若ΔD<sub>p</sub>中的最大值大于等于ΔD<sub>q</sub>中的最大值,则将社区p与社区q融合,即将当前网络社区标签集合f(g,t)中社区p的标签改为邻居社区q的标签,否则,不融合;5j)给定最大的社区融合迭代次数t<sub>max</sub>=h(g),判断当前社区融合迭代次数t是否达到最大的社区融合迭代次数t<sub>max</sub>,若达到,则终止迭代,并执行5k),否则,t=t+1,返回到5e)进行下一次迭代;5k)给定最大循环次数g<sub>max</sub>=100,判断当前循环次数g是否达到最大循环次数g<sub>max</sub>,若达到,则终止循环,并将最终网络社区标签集合f(g<sub>max</sub>,t<sub>max</sub>)中的社区展开成最终网络节点标签集合f<sub>z</sub>={f<sub>z1</sub>,f<sub>z2</sub>,...,f<sub>zi</sub>,...,f<sub>zn</sub>}输出,其中:f(g<sub>max</sub>,t<sub>max</sub>)={f<sub>1</sub>(g<sub>max</sub>,t<sub>max</sub>),f<sub>2</sub>(g<sub>max</sub>,t<sub>max</sub>),...,f<sub>u</sub>(g<sub>max</sub>,t<sub>max</sub>),...,f<sub>h(gmax)</sub>(g<sub>max</sub>,t<sub>max</sub>)},f<sub>u</sub>(g<sub>max</sub>,t<sub>max</sub>)表示达到最大循环次数g<sub>max</sub>和最大的社区融合迭代次数t<sub>max</sub>时网络社区标签集合中第u个社区的标签,u∈{1,2,...,h(g<sub>max</sub>)},h(g<sub>max</sub>)表示网络中达到最大循环次数g<sub>max</sub>时的社区数目,f<sub>zi</sub>表示达到最大循环次数g<sub>max</sub>时网络节点标签集合中第i个节点的标签,i∈{1,2,...,n},n表示网络中的节点数目,否则,g=g+1,返回到5b)进行下一次循环。
地址 710071 陕西省西安市太白南路2号