spark的数三角形算法_Graphx图算法【1】三角形TriangleCount

本文介绍了Spark GraphX的TriangleCount算法,用于统计网络图中每个顶点的三角形个数,以此反映网络稠密度和质量。该算法应用于社区发现和衡量社群耦合关系。算法步骤包括计算节点邻居集合、求边两端节点邻居集合的交集并统计三角形数,最终结果除以2。文中还提供了源码解析。
摘要由CSDN通过智能技术生成

Graphx的数三角形算法TriangleCount用于统计每个顶点所在的三角形个数。

1.1 简介

对网络图中进行三角形个数计数可以根据三角形数量反应网络中的稠密程度和质量。

1.2 应用场景

(一)用于社区发现

如微博中你关注的人也关注你,大家的关注关系中有很多三角形,说明社区很强很稳定,大家联系比较紧密;如果一个人只关注了很多人,却没有形成三角形,则说明社交群体很小很松散。

(二)衡量社群耦合关系的紧密程度

通过三角形数量来反应社区内部的紧密程度,作为一项参考指标。

1.3 算法思路

计算规则:

如果一条边的两个顶点有共同的邻居,则这三个点构成三角形。

计算步骤:

1. 为每个节点计算邻居集合

2. 对于每条边,计算两端节点邻居集合的交集,将交集中元素个数告知两端节点,

该个数即对应着节点关联的三角形数。

3. 对每个节点合并三角形数目统计总数,由于三角形中一个顶点关联两条边,所以

对于同一个三角形而言,一个顶点计算了两次,故最终结果需要除以2。

1.4 源码解析

object TriangleCount {

def run[VD: ClassTag, ED: ClassTag](graph: Graph[VD, ED]): Graph[Int, ED] = {

// Transform the edge data something cheap to shuffle and then canonicalize

//得到的是一个无自连边且无重复边的

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值