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\)为:
然后,我们将两个图的Kronecker积简单地定义为其对应的邻接矩阵的Kronecker乘积。
定义2:如果图\(G\)和图\(H\)的邻接矩阵分别为\(A(G)\)和\(A(H)\), Kronecker积 \(G\otimes H\)定义为具有邻接矩阵\(A(G) \otimes A(H)\)的图。
观测结果1:


该图表明了Kronecker积的过程。从3个节点的邻接矩阵到K2的邻接矩阵。
Kronecker图积的自相似性很明显:为了从\(K_{k-1}\)产生\(K_k\),我们通过将\(K_{k-1}\)的每个节点转换为\(K_1\)的副本来“扩展”(替换),然后将这些副本连接在一起 与\(K_{k-1}\)的邻接关系(见图1)。
这个过程是很自然的:可以想象它是假设图中的团体递归增长,而团体中的节点递归地扩展为团体的微型副本。 然后,子团体中的节点之间相互链接,也链接到其他团体的节点。
3.2 随机Kronecker图
因此,就以这样的概率去形成一个图。

但是,考虑到当生成太多节点时,需要的时间复杂度为\(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

浙公网安备 33010602011771号