并行与分布式系统中的并行图划分:几何划分算法(Geometric Partitioning)
字数 2826 2025-12-15 11:48:48
并行与分布式系统中的并行图划分:几何划分算法(Geometric Partitioning)
题目描述
给定一个包含n个顶点、每个顶点在d维空间中具有几何坐标(例如二维/三维坐标)的图,以及一个处理器数量p,几何划分算法的目标是将图的顶点集划分为p个子集,使得每个子集包含大约n/p个顶点,同时最小化不同子集之间的边割(即连接不同子集的边的数量)。该算法常用于科学计算(如有限元网格划分)和图形可视化等需要利用顶点空间局部性的并行计算中。核心挑战在于如何高效地利用几何位置信息来指导划分,以保持数据的空间局部性并减少处理器间的通信开销。
解题过程循序渐进讲解
步骤1:问题理解与输入输出
- 输入:
- 图G = (V, E),其中|V| = n,每个顶点v∈V具有一个d维坐标向量。
- 处理器数量p(通常p是2的幂次,但算法可以推广)。
- 可选:每个顶点的权重(如计算负载)、每条边的权重(如通信成本)。
- 输出:将顶点集V划分为p个不相交的子集V₀, V₁, …, V_{p-1},使得每个子集的大小(或权重和)大致平衡,且边割尽可能小。
- 关键观察:几何划分假设顶点在空间上靠近的顶点更可能在图中有边相连(即空间局部性)。因此,我们可以利用几何坐标来指导划分,而不需要显式地存储整个图结构(这是几何划分相对于图结构划分的主要优势)。
步骤2:基本思想——递归坐标二分法(Recursive Coordinate Bisection)
最简单的几何划分方法是递归坐标二分法,它通过递归地沿坐标轴分割空间来生成划分:
- 对当前点集,选择一个坐标轴(如x、y、z中数据范围最大的轴)。
- 沿该坐标轴找到一个超平面(在二维是一条线,三维是一个平面),将点集分成两个大小相等的子集。
- 递归地对每个子集重复该过程,直到子集数量达到p。
例如,在二维平面上划分4个区域(p=4):
- 首先沿x轴找到中位数垂直线,将点集分成左、右两半。
- 然后对左半部分沿y轴找到中位数水平线,将其分成左上、左下;对右半部分同样操作,得到右上、右下。
步骤3:高效中位数选择与超平面确定
为了实现划分,我们需要在每轮递归中快速找到分割超平面:
- 中位数查找:沿选定坐标轴,我们需要找到点的坐标值的中位数,使得超平面两侧的点数相等(或权重和平衡)。由于我们只需要中位数而非完全排序,可以使用快速选择(QuickSelect)算法,其平均时间复杂度为O(n)。
- 并行化:在并行环境中,点集可能已分布在不同处理器上。我们可以使用并行选择算法(如前面已讲过的“并行快速选择”),它基于采样和分布式分区,以对数轮通信找到全局中位数。
- 超平面方程:对于d维空间,超平面由方程x_k = median确定,其中k是选定的坐标轴索引。所有第k维坐标小于median的点分到一侧,大于等于的分到另一侧。
步骤4:处理非均匀分布与负载平衡
原始递归坐标二分法可能导致划分不平衡,因为空间上的均匀分布不代表图的边均匀。改进方法:
- 加权中位数:如果顶点有权重(如计算负载),我们按权重累加和找中位数,使得两侧的权重和平衡,而不是单纯点数平衡。
- 多级优化:几何划分可以作为初始划分,再结合图结构信息进行局部优化(类似多级图划分中的细化阶段),但本算法聚焦于纯几何方法。
步骤5:并行算法设计
假设初始点集已均匀分布在p个处理器上(如通过随机分布)。算法采用递归二分,同时处理器也递归分组:
- 初始状态:每个处理器持有整个点集的一个子集,所有处理器知道全局点集。
- 递归二分过程:
- 在当前处理器组(初始为所有p个处理器)中,协作选择坐标轴k(例如,计算每个坐标轴的数据范围,选择范围最大的轴)。
- 组内所有处理器共同运行并行选择算法,找到选定坐标轴上的全局加权中位数。
- 根据中位数,每个处理器将自己的点分为两部分:坐标小于中位数的点(组A)和坐标大于等于中位数的点(组B)。
- 处理器组分裂为两个子组:一个子组接收所有组A的点,另一个接收所有组B的点。这需要全局数据重分布:每个处理器将其组B的点发送给子组B中的处理器,并从其他处理器接收组A的点(如果它属于子组A)。重分布后,每个子组处理器持有新点集。
- 递归地对每个子组重复,直到子组处理器数量为1,此时该处理器持有的点就是最终划分的一部分。
- 终止条件:当处理器组大小为1时,该处理器上的点集即为一个最终分区。
步骤6:通信与复杂度分析
- 坐标轴选择:需要全局归约(如求每个坐标轴的最小/最大值),通信复杂度O(d log p)。
- 并行选择:在每轮递归中,需要分布式采样、划分和数据交换。假设使用高效的并行选择算法,通信复杂度为O((n/p) log p)每轮(因为每个处理器发送的数据量与其本地点数成比例)。
- 数据重分布:每轮二分后,点需要在处理器间重新分配。在最坏情况下,一个处理器可能需要将其所有点发送到另一个处理器,因此每轮通信量可达O(n/p)。但由于递归深度为log₂ p,总通信量约为O((n/p) log p)。
- 时间复杂度:本地计算主要是快速选择和数据划分,每轮O(n/p)平均时间,总时间O((n/p) log p)。
- 空间复杂度:每个处理器存储其分配的点,O(n/p)。
步骤7:扩展与优化
- 更高维数据:算法可直接扩展到d维,只需在每轮选择坐标轴。为了更好的划分质量,可以选择数据分布最分散的轴(通过计算方差或范围)。
- 非点数据:如果图没有显式坐标,但可以嵌入到低维空间(如通过多维缩放MDS),可以先计算几何嵌入再划分。
- 与图划分结合:纯几何划分可能忽略一些非局部边,导致边割较大。因此,在实际系统(如MPI的图划分库ParMETIS)中,几何划分常作为多级划分的初始划分步骤,随后进行基于图结构的局部优化(如Kernighan-Lin细化)。
步骤8:示例演示
假设有8个处理器(p=8)和二维平面上的点集,初始随机分布。目标是8个分区:
- 第一轮:所有8个处理器协作,选择x轴(假设x范围更大),找到x坐标中位数。将点分为左半(x < median)和右半(x ≥ median)两组,处理器分为两组各4个。
- 第二轮:左半组4个处理器选择y轴,找到y坐标中位数,分为左上和左下;右半组同理分为右上和右下。现在有4个组,每组2个处理器。
- 第三轮:每组2个处理器再沿x轴(或y轴)二分,最终每个处理器单独一组,获得最终分区。
最终划分在几何空间上形成类似四叉树的结构,每个分区对应一个空间区域。
总结
几何划分算法利用顶点的几何坐标,通过递归坐标二分实现高效并行划分。它基于“空间邻近性对应图连接性”的启发式,特别适用于具有空间局部性的图数据(如网格、点云)。算法核心是并行选择中位数和数据重分布,通信开销可控,易于实现。尽管纯几何方法不一定最小化边割,但它为更复杂的图划分提供了良好的初始解,并在许多实际应用中表现出色。