CS224W:Kronecker graphs: An Approach to Modeling Networks

Kronecker graphs: An Approach to Modeling Networks

Kronecker graph 模型是一种高度符合现实世界网络的图形,运用拙略的生成方法的时间复杂度是超指数级的,而新的算法可以把时间复杂度降低为线性。Kronecker graph model 是基于递归构造的图。

3.1 Main idea

在此模型的主要想法是递归地构建自相似的图。从一个初始图 \(K_1\) ,拥有 \(N_1\) 个节点和 \(E_1\)条边开始,然后递归地连续构造更大的图\(K_2,K_3,...\) 例如,第k个图\(K_k\)\(N_k=N_1^k\)个节点,\(E_k = E_1^k\) (要满足致密幂定律)。

结果表明,两个矩阵的Kronecker 积就是正确的方法!

下面给出Kronecker积的定义:

定义1: 给定两个矩阵\(A = [a_{i,j}]\)\(B\),大小分别为 \(n\times m\)\(n' \times m'\),大小为\((n\cdot n')\times (m \cdot m')\)的Kronecker积矩阵\(C\)为:

\[C = A \otimes B= \begin{pmatrix} a_{1,1}B & a_{1,2}B &\cdots& a_{1,m}B \\ a_{2,1}B & a_{2,2}B &\cdots& a_{2,m}B \\ \vdots & \vdots &\ddots &\vdots \\ a_{n,1}B & a_{n,2}B &\cdots& a_{n,m}B \\ \end{pmatrix} \]

然后,我们将两个图的Kronecker积简单地定义为其对应的邻接矩阵的Kronecker乘积。

定义2:如果图\(G\)和图\(H\)的邻接矩阵分别为\(A(G)\)\(A(H)\), Kronecker积 \(G\otimes H\)定义为具有邻接矩阵\(A(G) \otimes A(H)\)的图。

观测结果1:

\[Edge(X_{ij},X_{kl})\in G \otimes H \ \ iff \ \ (X_i,X_k)\in G \ and \ (X_j,X_l)\in H \]

image-20201115163014760

image-20201115163232508

该图表明了Kronecker积的过程。从3个节点的邻接矩阵到K2的邻接矩阵。

image-20201115163451025

Kronecker图积的自相似性很明显:为了从\(K_{k-1}\)产生\(K_k\),我们通过将\(K_{k-1}\)的每个节点转换为\(K_1\)的副本来“扩展”(替换),然后将这些副本连接在一起 与\(K_{k-1}\)的邻接关系(见图1)。

这个过程是很自然的:可以想象它是假设图中的团体递归增长,而团体中的节点递归地扩展为团体的微型副本。 然后,子团体中的节点之间相互链接,也链接到其他团体的节点。

3.2 随机Kronecker图

image-20201115175643504

因此,就以这样的概率去形成一个图。

image-20201115190318195

但是,考虑到当生成太多节点时,需要的时间复杂度为\(O(n^2)\) 太慢了

所以,需要有一种更快地算法来生成节点图。

因此,可以利用递归结构来Kronecker图。此时的时间复杂度为 \(O(log_2n)\)

算法步骤:

每次插入一条边在图\(G\)

创造一个归一化矩阵 \(L_{uv} = \Theta_{uv}/(\sum_{op}\Theta_{op})\)

\(FOR \ \ i= 1 \dots m\)

​ 从 \(x=0,y=0\)开始

​ 以 \(L_{u,v}\) 的概率选择一行/列 \((u,v)\)

\(x += u \cdot2^{m-i},y += v\cdot2^{m-i}\)

加入边 \((x,y)\) to \(G\)

关于算法这一块我也不是很懂,希望有dalao告诉我,之后明白了会更新

这样构造出来的Kronecker模型和现实网络模型十分吻合

估算: n=76k,m=510k

posted @ 2020-11-15 21:29  QingYuAn_Wayne  阅读(320)  评论(0)    收藏  举报