流式图分割

本文介绍了流式图分割的概念,强调其在处理大规模图数据时的优势,包括仅加载一次图和保持图性质。点分割和边分割是两种主要的图分割类型,目标函数分别最小化复制因子和割。流式边分割通过分配邻居最多的节点来实现,而流式点分割如DBH和HDRF则考虑了局部性和平衡。POWERGRAPH是HDRF的一个特例,不考虑点的度。
摘要由CSDN通过智能技术生成

承接自上文。本文大部分材料来自SIGMOD 19年Tamer Ozsu老师的一篇论文1

图分割算法的特性罗列如下(截图自原文):
在这里插入图片描述

流式图分割 (SGP: Streaming Algorithms for Graph Partitioning)

流式图分割在2012年KDD的一篇文章中给出了定义2。有别于传统的图分割,流式图分割一次处理部分图数据,并对于拿到的部分图数据分配到各个节点当中,之后不再迁移已经分配好的数据。所以流式图分割有几个优点:1)可以处理很大的图,理论上只要集群可以容纳,那么就可以处理多大的图。2)一般只加载一次图。3)相比于基于哈希的分配方式,可以有效的保留部分图的性质,进而提升算法性能。

图分割类型

图的分割按点边不同可以分成点分割(vertex-cut)和边分割(edge-cut)两种。直观就是从点切开还是从边切开,从点切开那么就是同一个点可能在多个节点当中存在多份镜像/拷贝。从边切开,那么一条边就有可能存在两个分区当中。

→ \rightarrow 点分割(侵删):
在这里插入图片描述
→ \rightarrow 边分割(侵删):

在这里插入图片描述

  1. 对于点分割来说,目标函数一般是要复制因子尽可能的小,就是不同节点中拷贝的点尽可能的少。

C ( P t ) = ∑ u ∈ V ∣ A ( u ) ∣ ∣ V ∣ C(P^t) = \frac{\sum\limits_{u\in V}|A(u)|}{|V|} C(Pt)=VuVA(u)

a. A ( u ) A(u) A(u)表示点 u u u出现在的分区集合。 ∣ A ( u ) ∣ |A(u)| A(u)表示 u u u总共出现在几个分区中。
b. P t P^t Pt表示 t t t时刻的分区状态。
c. C ( P t ) C(P^t) C(Pt)表示 P t P^t Pt当前的复制因子。

  1. 对于边分割来说,目标函数一般是要割(cut)尽可能的小,因为cut越小,那么一般来说通讯的代价也相应会比较小。遗憾的是Minimum k-cut的复杂度是NPC的,当图分割成k份,k是作为输入时。(注:有 O ( ∣ V ∣ k 2 ) O(|V|^{k^2}) O(Vk2)复杂度的算法。wiki: Minimum k-cut)。

C ( P t ) = ∑ ( u , v ) ∈ E

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值