您的位置:首页 > 理论基础 > 计算机网络

社交网络图挖掘4--三角形计数问题

2017-10-25 18:59 309 查看

计算一个随机图中的三角形数目期望值

由n个节点和m条边随机构成的图的中:

图中总共有(n3)=n3/6个三节点集合;

在任意给定的两个节点之间加入边的概率为m/(n2)=2m/n2;

如果每条边的选择独立,那么任意三节点中包含三条边的概率为(2m/n2)3=8m3/n6;

则该图的三角形期望数目为:(8m3/n6)(n3/6)=43(m/n)3

一个寻找三角形的算法

相关概念

假设一个图有n个节点m条边,其中m>n:

1.

重节点(heavy hitter):如果一个节点的度不小于m−−√,则该节点为重节点,重节点的数目不可能超过2m−−√。

重节点三角形(heavy hitter triangle):如果某个三角形的三个顶点都是重节点,则该三角形为重节点三角形。

对图进行预处理:

计算每个节点的度,时间为O(m);

以边的两个端点作为键对边建立索引,即给定两个节点,通过索引就可以确定这两个节点之间是否有边。时间为O(m);

以边的单个端点作为键对边建立另一个索引,即给定节点v,返回该节点的邻接节点。

对节点进行排序:

首先按照节点的度排序,如果节点v的度小于节点u的度,则u<v;

如果节点v的度等于节点u的度,则按照节点的编号谱排序,如果节点v的编号小于节点u的编号,则u<v;

寻找重节点三角形:

考虑所有重节点中所有三节点集合,重节点三角形可能有O(m3/2)个,时间为O(m3/2)。

寻找其他三角形:

考虑每条边(v1,v2),如果v1和v2都为重节点则忽略这条边;但如果假定v1不是重节点并且有v1<v2,令u1,u2,...,uk为与v1相邻的节点,其中k<m−−√,利用节点索引在O(1)时间内找到这些节点;

对于每个节点ui,利用边索引在O(1)时间内判断边(ui,v2)是否存在;

当且仅当边(ui,v2)存在,并且v1<ui 时,对三角形(ui,v2,ui)计数,时间为O(m3/2)。

算法总时间为时间为O(m3/2)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  社交网络