2022云栖精选—图计算发展的回顾与展望

简介: 摘要:本文整理自上海交通大学安泰经济与管理学院数据与商务智能系讲席教授、数据与商务智能系系主任、欧洲科学院院士、IEEE Fellow林学民,在云栖大会“图计算及其应用”分论坛的分享。本篇内容主要分为四个部分:1. 子图罗列Subgraph Enumeration2. 内聚子图Cohesive Subgraphs3. 网络弹性Network Resilience4. 二分图Bipartite Graph

lQLPJxbcF2cqNBvMiM0FeLCMz4ifcSGHeANpqgFLAEAA_1400_136.png

什么是图?这个图不是我们平时说的图形或者图像,这个图是点和边。点代表事物,边表示他们之间的关系。

 

image.png

 

我们最早知道图是欧拉定理和格尼斯堡七桥问题,然后翻山越岭,经过历史的长河,我们来到了本世纪初的图数据库和大图计算。

 

image.png

 

现在各行各业都需要图,比如:Web Graph, Social NetworkProtein Interaction Network等等。下图是一个图的应用场景,左边是各种各样的应用,应用可以分解出基本算子,然后基本算子再分解出最基本算子,所以做系统就要把最基本算子处理好。

 

image.png

 

一、子图罗列Subgraph Enumeration

 

左边P是模式图,中间G是数据图,通常模式图比较小,可能就是几个点,数据图有可能非常大。下面是从G中找到所有和P同构的子图实例的三个样例。所以能想象,在实际应用中这种映射有可能会有成千上万,甚至上亿的量。

 

image.pngimage.pngimage.png

 

下面来分享一下子图罗列在各行各业中的应用。

 

1.   实时周期检测

 

下图是几年前和阿里合作的实时周期检测项目,主要用于欺诈检测和洗钱检测。

 

image.png

 

2.   检测指定社区

 

image.png

 

3.   CPU解决方案

 

image.png

 

4.   分布式技术

 

在分布式技术中没有哪一个算法是最好的,需要我们根据数据分布选择适合的算法。

 

image.png

 

二、内聚子图Cohesive Subgraphs

 

下图是曾经和阿里合作的一个项目,目的是抓住刷单的水军。这个问题我们是怎么解决的呢?其实就是将问题转化成抓Bi-Clique就可以了。

 

image.png

 

所谓的Clique就是每两个点之间都有一条边,那么如何把所有的Clique或者最大的Clique找出来呢?这里就会有一个很大的难点。因为CliqueClique之间是可以重叠的,这样就会使数目变得非常大。

 

image.png

 

在数据库他们会做各种各样的变种,比如Quasi-Clique,那么如何定义他们呢?

 

比如clique的边数是| v | ( | v | )-1,那么Quasi-Clique就是γ | v | ( | v | )-1

 

image.png

 

K-PlexClique里它的度数等于n-1,那么K-Plex每个点的度数就会大于等于n-k

 

image.png

 

K-clique是子图中任意两个顶点之间的距离小于等于kK-club同样也是任意两个顶点之间的距离小于等于k,但是它的两点是指子群中两点的距离。

 

image.png

 

K-Core是指子图中每个点的度数大于等于k。这个就比较简单,比如现在这个图里找一度数最小的点,如果度数等于或者大于kfinish了。小于k的,我们就把它除掉,再update度数。

 

image.png

 

K-TrussK-Core的加强版,每条边上三角形的个数要大于等于k-2。那么为什么说K-Truss是加强版呢?你能想象一个K-Truss一定是k-1 Core,就是度数值一定是大于等于k-1的。

 

K-Truss的算法实际上和K-Core的差不多。算法复杂性就是把每条边上的三角形个数全部罗列出来,这也是一个多项式算法。

 

image.png

 

子图里的度数如果大于等于p乘以全局的度数就叫P-Cohesion

 

image.png

 

K-edge Connected是指一个图里去掉任意k减一条边,它仍然是联通的。所以K-edge Connected Component就是找最大的子图。这是一个分解算法,最坏的情形是N的三次方。

 

image.png

 

还有一个是K-vertex Connected Component,这个我们暂时没有找到非常快的算法。如果你们对这个话题感兴趣,可以来一起提高它的性能。

 

image.png

三、网络弹性Network Resilience

 

Friendster曾经是一家比较大的社交网站,但在2005年突然就collapse了。这到底是为什么呢,其实原因非常不好找。

 

就比如你去了一个party,好吃的东西和一个聊得来的人并不会让你留很久。如果想要长时间呆留在party,就需要很多这样的人才可以。

 

image.png

 

假如我是K-Core,给你的budgetb,也就是让你想办法留下b个人。这个b不用满足K-Core条件,那么b要怎么选才能让network最大呢?

 

image.png

 

最终我们没有找出非常快速的精确算法,所以就找了个近似算法。 这个论文发表在了VLDB 2017上。

 

image.png

 

四、二分图Bipartite Graph

 

所谓的Bipartite Graph就是把图分成两层,上面一层,下面一层。它们都没有边只有cross两层。

 

image.png

 

实际上它有很多应用,比如下图最左边的就是一个非常典型的academic的例子,上面是演员,下面是电影。

lQLPJxbcF2cqM2TM-M0CnrCgW_7LDpyh1wNpqgFKAPsA_670_248.png

相关文章
|
消息中间件 存储 负载均衡
深入了解Kafka中Topic的神奇之处
深入了解Kafka中Topic的神奇之处
843 0
|
Web App开发 JavaScript 前端开发
从零开始,轻松打造个人化Chrome浏览器插件
从零开始,轻松打造个人化Chrome浏览器插件
437 0
|
10月前
|
人工智能 算法 安全
深度:善用人工智能推动高等教育学习、教学与治理的深层变革
本文探讨人工智能技术与高等教育深度融合带来的系统性变革,从学习进化、教学革新与治理重构三个维度展开。生成式AI作为技术前沿代表,正通过标准化认证体系(如培生的Generative AI Foundations)提升职场人士、教育者及学生的能力。文章强调批判性思维、高阶认知能力与社交能力的培养,主张教师从经验主导转向数据驱动的教学模式,并提出构建分布式治理结构以适应技术迭代,最终实现人机协同的教育新生态,推动高等教育在智能时代焕发人性光辉。
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
537 0
Linux系统初始化脚本
|
10月前
|
人工智能 自动驾驶 物联网
5G到底有多牛?一文看懂它的原理与优势!
5G到底有多牛?一文看懂它的原理与优势!
735 19
|
数据管理 数据处理 数据库管理
数据管理DMS上线托管Dify免费邀测中
数据管理DMS支持托管Dify,提供从Notebook开发、数据处理、模型构建到大模型应用开发的一站式Data+AI集成解决方案。借助Dify平台,简化企业智能化落地流程,了解更多详情,请访问[官方文档](https://help.aliyun.com/zh/dms/dify-invited-test/)。
|
机器学习/深度学习 运维 自然语言处理
一文读懂!异常检测全攻略!从统计方法到机器学习 ⛵
本文系统介绍了『单变量异常检测』和『多变量异常检测』识别技术,包括传统的统计方法(四分位距、标准差),以及前沿的机器学习模型(孤立森林、DBSCAN、LOF局部离群因子)。
2268 2
一文读懂!异常检测全攻略!从统计方法到机器学习 ⛵
|
存储 前端开发 JavaScript
实现一个网页聊天室
实现一个网页聊天室
|
弹性计算 容灾 安全
手把手教你如何购买阿里云服务器(新手用户教程)
手把手教你如何购买阿里云服务器(新手用户教程) ,阿里云百科来详细说下这两种方式购买云服务器的流程,购买活动机价格便宜,只是可选配置较为固定,就那么几款,简单选择地域节点即可;自定义购买选择范围广,选项配置也会比较复杂,当然价格会稍微贵一些。
2669 0
手把手教你如何购买阿里云服务器(新手用户教程)
|
算法 Linux 定位技术
C++游戏后端开发,基于魔兽开源后端框架TrinityCore
C++游戏后端开发,基于魔兽开源后端框架TrinityCore