并行与分布式系统中的并行图划分:METIS算法
字数 1162 2025-11-01 15:29:05
并行与分布式系统中的并行图划分:METIS算法
题目描述
在图计算中,图划分(Graph Partitioning)是将图的顶点集划分为若干个大小相近的子集,同时最小化子集之间的边数(即切割边)。METIS算法是一种高效的多级图划分算法,广泛应用于并行计算中以实现负载均衡。其核心目标是将大图划分为k个部分,使得每个部分的顶点数大致相等,且切割边数量最小。该算法包含三个阶段:粗化(Coarsening)、初始划分(Initial Partitioning)和反粗化/优化(Uncoarsening/Refinement)。
解题过程
1. 粗化阶段(Coarsening)
- 目标:将原始图(记为G₀)逐步简化,生成一系列规模递减的图G₁, G₂, ..., Gₘ,其中Gₘ的顶点数远小于G₀。
- 方法:
- 边收缩(Edge Contraction):选择一条边(如权重最大的边),将其两个端点合并为一个超顶点(Supervertex),新顶点的权重为原顶点权重之和。合并后,重复边的权重叠加。
- 匹配策略:常用随机匹配或基于重量的匹配(如HEM,Heavy Edge Matching),优先合并权重大的边,以保留图的局部结构。
- 结果:最终得到一个极小的图Gₘ(如仅剩几百个顶点),便于后续精确划分。
2. 初始划分阶段(Initial Partitioning)
- 目标:对最粗的图Gₘ进行划分。
- 方法:
- 由于Gₘ规模很小,可直接使用精确算法(如穷举搜索)或启发式算法(如谱划分、Kernighan-Lin算法)将其划分为k个部分。
- 要求划分后的子图权重均衡(即顶点权重之和相近),并尽量少切割边。
3. 反粗化与优化阶段(Uncoarsening/Refinement)
- 步骤:
- 反粗化:将Gₘ的划分结果逐层投影回更细的图(从Gₘ到Gₘ₋₁, ..., G₀)。每层将超顶点展开为原顶点,并继承所属划分。
- 优化(Refinement):在每一层投影后,使用局部优化算法(如Kernighan-Lin算法或Fiduccia-Mattheyses算法)调整顶点归属,减少切割边。
- KL/FM算法:通过交换顶点 between 不同分区,选择能最大程度降低切割边的移动操作,直到无法进一步优化。
- 关键技巧:限制优化范围(如仅检查边界顶点),避免全局重算,提升效率。
4. 并行化扩展
- 粗化并行化:在不同子图上并行执行匹配和收缩(如基于顶点分块的并行匹配)。
- 优化并行化:采用多线程分别优化不同子图边界,通过锁或原子操作处理顶点移动冲突。
总结
METIS通过多级框架将复杂划分问题分解为可管理的子问题,兼顾全局优化与局部调整,其并行化版本(如ParMETIS)进一步利用分布式内存加速大规模图划分。