dgl.metis_partition_assignment

dgl.metis_partition_assignment(g, k, balance_ntypes=None, balance_edges=False, mode='k-way', objtype='cut')[source]

此函数使用 Metis 分区算法将节点分配到不同的分区。

执行 Metis 分区时,我们可以对分区施加一些约束。目前,它支持两种约束来平衡分区。默认情况下,Metis 总是尝试平衡每个分区中的节点数量。

  • balance_ntypes 平衡每个分区中不同类型节点的数量。

  • balance_edges 平衡每个分区中边的数量。

为了平衡节点类型,用户需要传入一个包含 N 个元素的向量,用于指示每个节点的类型。N 是输入图中的节点数量。

分配好分区后,我们构建分区。

参数:
  • g (DGLGraph) – 待分区的图

  • k (int) – 分区的数量。

  • balance_ntypes (tensor) – 每个节点的节点类型

  • balance_edges (bool) – 指示是否平衡边的数量。

  • mode (str, "k-way""recursive") – 使用多级递归二分法还是多级 k 路分区法。

  • objtype (str, "cut""vol") – 设置目标为最小化边切割或最小化通信量。此参数由 Metis 算法使用。

返回值:

一个向量,每个元素指示对应顶点的分区 ID。

返回类型:

一个 1-D 张量