TuGraph Analytics图计算快速上手之K-core算法

作者:郑光杰

引言

K-Core算法是一种用来在图中找出符合指定核心度的紧密关联的子图结构,在K-Core的结果子图中,每个顶点至少具有k的度数,且所有顶点都至少与该子图中的 k 个其他节点相连。K-Core通常用来对一个图进行子图划分,通过去除不重要的顶点,将符合逾期的子图暴露出来进行进一步分析。K-Core图算法常用来识别和提取图中的紧密连通群组,因具有较低的时间复杂度(线性)及较好的直观可解释性,广泛应用于金融风控、社交网络和生物学等研究领域。

K-Core算法介绍

一张图的 K-Core子图是指从图中反复去掉度(不考虑自环边)小于 k 的节点之后得到的子图。该计算过程是一个反复迭代剪枝的过程,在某一轮剪枝之前度大于等于 k 的节点,可能会在该轮剪枝后变为度小于 k。比如3-core子图的切分过程如图1所示:

image.png
3-core子图切分过程

TuGraph-Analytics实现K-Core算法

要运行K-Core算法,我们可以指定使用的图,直接在图查询里调用K-Core算法,语法形式如下:

INSERT INTO tbl_result
CALL kcore(3) YIELD (id, value)
RETURN id, value;

运行该语法之后,就可以从图中查询到k=3的子图的id以及该id的邻居数。
TuGraph-Analytics 已经内置了许多算法,如果想要自定义算法,可以基于AlgorithmUserFunction接口实现,比如自定义k-core 算法实现如下:

package com.tugraph.demo;

import com.antgroup.geaflow.common.type.primitive.IntegerType;
import com.antgroup.geaflow.dsl.common.algo.AlgorithmRuntimeContext;
import com.antgroup.geaflow.dsl.common.algo.AlgorithmUserFunction;
import com.antgroup.geaflow.dsl.common.data.RowEdge;
import com.antgroup.geaflow.dsl.common.data.RowVertex;
import com.antgroup.geaflow.dsl.common.data.impl.ObjectRow;
import com.antgroup.geaflow.dsl.common.function.Description;
import com.antgroup.geaflow.dsl.common.types.StructType;
import com.antgroup.geaflow.dsl.common.types.TableField;
import 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值