赞
踩
之前都是图的模型都是已知的:
这节开始研究如何用模型生成这样的图:
图生成模型问题的研究动机,以前都是假设图是已知的;但我们也会想通过graph generative model人工生成与真实图类似的synthetic graph,这可以让我们:
随机选择的节点拥有度为k的概率为: p ( k ) p(k) p(k)
有 N k N_k Nk个节点拥有度k则有 P ( k ) = N k N P(k)=\frac{N_k}{N} P(k)=NNk
聚类系数,用来衡量节点 i i i的邻居的相互连接程度,记节点 i i i的度为 k i k_i ki,则聚集系数为: C i = 2 e i k i ( K i − 1 ) , C i ∈ [ 0 , 1 ] C_i=\frac{2e_i}{k_i(K_i-1)},C_i\in[0,1] Ci=ki(Ki−1)2ei,Ci∈[0,1]
e i e_i ei是邻居之间的边,不含节点 i i i与邻居的边。整个图的聚集系数是求所有节点的聚集系数后进行平均: C = 1 N ∑ i N C i C=\frac{1}{N}\sum_i^NC_i C=N1∑iNCi
就是最大连通分量,找出下图的最大连通分量:
步骤:
图的直径:图中任意节点对的最大的最短路径长度
对于连通无向图或强连通有向图而言,图的平均路径长度为:
h
‾
=
1
2
E
m
a
x
∑
i
,
j
≠
i
h
i
j
\overline h=\frac{1}{2E_{max}}\sum_{i,j\ne i}h_{ij}
h=2Emax1∑i,j=ihij
h i j h_{ij} hij是两个节点之间的距离;
E m a x = n ( n − 1 ) 2 E_{max}=\frac{n(n-1)}{2} Emax=2n(n−1)是图中可包含的最大边数量
通常在计算过程中,我们会忽略掉路径长度为无穷的值,从而计算出正确的平均路径长度。
MSN Messenger: 只包含 1 活动月份,基本信息如下:
2.45亿用户 登录、1.8亿用户参与对话、 超过300亿次对话、超过2550亿次交换消息。
原始度分布,平均度为14.4:
横纵坐标log后的度分布
聚集系数:0.114
连通分量,最大那个基本涵盖99%的用户。
路径长度,平均路径长度为6.6,有90%的节点可以在8跳内相互访问。
以上信息没有对比也无法知道这些指标是否偏高或者正常,下面引入三个生成随机图的方法,将生成图与MSN网络进行对比
ER方法主要有两种形式:
G n p G_{np} Gnp:表示一个有n个节点的无向图,其中每个节点对(u,v)是否有边,是按i.i.d(独立同分布)的概率p进行设置的。
G n m G_{nm} Gnm:表示一个有n个节点的无向图,其中随机选择m个节点对形成边。
我们主要用第一种形式,它有两个变量来控制生成图的形式:
【1】在图论的数学理论部分中,ER模型(Erdős–Rényi model)可指代两个密切相关的随机图生成模型中的任意一个。这两个模型的名称来自于数学家Paul Erdős(保尔•厄多斯)和Alfréd Rényi(阿尔弗烈德•瑞利),他们在1959年首次提出了其中一个模型,而另一个模型则是Edgar Gilbert(埃德加•吉尔伯特)同时并且独立于Erdős和Rényi提出的。在Erdős和Rényi的模型中,节点集一定、连边数也一定的所有图是等可能的;在Gilbert的模型中,每个连边存在与否有着固定的概率,与其他连边无关。在概率方法中,这两种模型可用来证明满足各种性质的图的存在,也可为几乎所有图的性质提供严格的定义。
其实度分布是一个二项分布:
上面的n−1表示是除了当前节点外,从n−1个节点中选出k个节点,让这k个节点与当前节点以概率p的方式相连。
该二项分布的均值和方差为:
k
‾
=
p
(
n
−
1
)
σ
=
p
(
1
−
p
)
(
n
−
1
)
\overline k=p(n-1)\\ \sigma=p(1-p)(n-1)
k=p(n−1)σ=p(1−p)(n−1)
看图基本就是高斯分布:
由于图中的边是按i.i.d.(独立同分布)的概率p进行设置的。因此,对于节点i度为 k i k_i ki而言,其邻居之间出现边的期望可以表示为:
E [ e i ] = p k i ( K i − 1 ) 2 E[e_i]=p\frac{k_i(K_i-1)}{2} E[ei]=p2ki(Ki−1)
从而根据原始的聚集系数公式得到期望聚集系数为:
E
[
e
i
]
=
p
⋅
k
i
(
K
i
−
1
)
k
i
(
K
i
−
1
)
=
p
=
k
‾
n
−
1
≈
k
‾
n
E[e_i]=\frac{p\cdot k_i(K_i-1)}{k_i(K_i-1)}=p=\frac{\overline k}{n-1}\approx \frac{\overline k}{n}
E[ei]=ki(Ki−1)p⋅ki(Ki−1)=p=n−1k≈nk
上式中最后的等号有均值公式转化得来。
随机图的聚集系数比较小,如果用固定的度k或者 p = k ‾ n − 1 p=\frac{\overline k}{n-1} p=n−1k来生成图,随着图节点数n越大,聚集系数越小。
保证图中节点数量不变,将生成边的概率从0变到1,图结构则有下面的变化:
当p = 0 ,表示不会有边生成,空图
当p = 1,表示每个节点对100%生成边,完全图
k
‾
=
p
(
n
−
1
)
\overline k=p(n-1)
k=p(n−1),因此当
p
=
1
n
−
1
p=\frac{1}{n-1}
p=n−11时,
k
‾
=
1
\overline k=1
k=1,意味每个节点都会有一条边相连,意味着开始出现较大连通分量,如果边小于节点数量,也就是
k
‾
<
1
\overline k<1
k<1意味着有节点是没有边相连的。基于这个理论,我们可以得到giant component:出现的临界点就是节点平均度为1,写成数学表达就是:
p
=
k
‾
n
−
1
o
r
k
‾
=
2
E
n
p=\frac{\overline k}{n-1}or\quad \overline k=\frac{2E}{n}
p=n−1kork=n2E
当节点平均度小于1时:k = 1 − ε ,所有连通分量大小上限是:Ω ( log n )
当节点平均度大于1时:k = 1 + ε,有一个连通分量大小上限是:Ω ( n ) ,其他连通分量大小上限是:Ω ( log n )
此时每个节点的期望边数至少为1,在可视化后就是:
这个图也对应了上一张图的理论推断,可以看到,平均度大于1时,最大连通量中的节点急剧增加,当平均度为2的时候,80%的节点都在最大连通分量中了。
这里补充一个图G(V,E)的扩展系数α:
中间黑线就是# edges leaving S ,扩展系数用来衡量一个图的鲁棒性,要断开L个节点,需要去掉$≥ α ⋅ l $条边。
上面的几个图例中,真实图一般介于第一和第二个之间。社区内部鲁棒性强,社区间的鲁棒性差。
这个新的定义和下面要将的路径长度有关。
定理:对于一个包含n个节点的图,若其扩展系数为α则所有节点对的路径长度为:
O
(
log
n
α
)
O(\frac{\log n}{\alpha})
O(αlogn)
也就是说,当图规模变大,那么log n会变大,但同时α 也会变大,因此路径长度相对而言不一定会变大。
对于一个随机图
G
n
p
G_{np}
Gnp,存在以下关系:
log
n
>
n
p
>
c
(
常数
)
\log n>np>c(常数)
logn>np>c(常数)
其直径为: d i a m ( G n p = O ( log n log ( n p ) ) ) diam(G_{np}=O(\frac{\log n}{\log (np)})) diam(Gnp=O(log(np)logn))
从上面的式子可以知道,随机图 G n p G_{np} Gnp 的直径是节点数量的对数,因此随机图 G n p G_{np} Gnp 有比较好的扩展性,可以在对数级步数内BFS所有节点
有了上面扩展系数的基础,我们可以知道,
G
n
p
G_{np}
Gnp随机图可以在拥有很大规模的情况下,仍然保持很短的最短路径(图直径很小)。
当我们将节点的平均度设置不变:
k
‾
=
n
p
=
c
(
常数
)
\overline k=np=c(常数)
k=np=c(常数)那么
G
n
p
G_{np}
Gnp的直接就变成:
d
i
a
m
(
G
n
p
=
O
(
)
)
diam(G_{np}=O())
diam(Gnp=O())
实验可以证明:
通过上面ER的方法我们看到, G n p G_{np} Gnp随机图两种平均路径长度较长( o ( log n ) ≈ 8.2 o(\log n)\approx8.2 o(logn)≈8.2),聚集系数低。我们希望能找到一种高聚集系数且平均路径较短的随机图,使其更接近真实图:
因为在相同平均节点度的情况下,真实图比起随机图而言,平均路径较短(其实差不多),聚集系数更大
一般来说,平均路径和聚集系数两个不可同时得到,因此要想在二者之间做权衡利弊,就是Small-world graph的思想:
可以看到随着随机rewire的概率p pp趋近1,中间状态就是我们的目标网络结构。把聚集系数画出来:
可以看到当随机rewire概率趋向于1的时候,聚集系数才会变很小,但是很小随机rewire概率,就可以获得很多shortcut,使得平均路径变短。(注意看上图中的横坐标不是等值的。)
小结:只需要很少的rewire操作,就可以让随机图获得较高的聚集系数,使其比较接近真实图,但是其度分布却不正确(这里应该补个图才有说服力)。
第三种生成随机图的方式,是用递归的方式来生成图结构。
具体方法是先根据给定的小矩阵 K 1 K_1 K1,通过克罗内克积【2】得到 K 2 = K 1 ⊗ K 1 K_2=K_1\otimes K_1 K2=K1⊗K1
图的克罗内积是对两个图的邻接矩阵求克罗内积,以其值作为新图的邻接矩阵。
当然可以重复以上步骤:
先定义初始化矩阵,初始化矩阵可以包含多个矩阵,这些矩阵大小可以不一样。
例如:
上面有两组不同的图,图的邻接矩阵,3次克罗内克积结果: K 3 K_3 K3。
具体创建Stochastic Kronecker graphs步骤如下:
上面的步骤中,如果得到了生成有向边的概率矩阵,要对矩阵中的 n 2 n^2 n2个元素依次生成边,相当于计算了 n 2 n^2 n2次,可以用另外一种快速生成方式,时间复杂度为边的线性复杂度 O ( E ) O(E) O(E)。
上图中间是正常计算结果,右边是把结果看成四个小块,相当于原来的 Θ \Theta Θ
里面的每个元素可以继续分,直到不能分解为止
具体的描述如下:
快速克罗内克生成器算法,针对生成有向图。在有 n = 2 m n=2^m n=2m 个节点的图G中插入一条边,步骤如下:
1.从x=0,y=0开始
2.概率 L u v L_{uv} Luv选择对应的象限(u,v)
3.将象限进行分解,知道对应图G中的第i个元素:
上面步骤中的m就是克罗内克积的次数,就是把矩阵分形了多少次,最终结果可以根据初始化矩阵和m直接用公式算出来,如果一个图有E条边,直接算E次即可,所以全图生成时间复杂度为 O ( E ) O ( E ) O(E)。这种生成方式可能会在两个节点生成多条边,因为在步骤2中可能选择到相同结果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。