METIS-一种图切分的软件包(简介)

METIS是由Karypis Lab开发的一个具有强大功能的图切分软件包。准确来说,METIS是一个串行图切分的软件包,Karypis Lab还提供了并行版的图切分软件包parMETIS和支持超图和电路划分的hMETIS。METIS的算法设计主要基于多层次递归二分切分法、多层次K路切分法以及多约束划分机制。用户使用METIS软件包时,可以根据需要选择相应的切分方式。


METIS主要的特性如下。首先,METIS具有高质量的划分结果,据称比通常的谱聚类(spectral clustering)要精确10%-50%。其中Chaco支持谱聚类算法。其次,METIS执行效率非常高,比常见的划分算方法快1-2个数量级。百万级顶点的图几秒钟之内就可以切分为256个类。最后,METIS具有很低的注入元(fill-in ),从而降低了存储负载和计算量。


METIS的工作原理:以k路多层次划分为例。

METIS-一种图切分的软件包(简介)_第1张图片

整个划分过程分成coarsening, initial partitioning 和 uncoarsening (refinement) 三个部分。coarsening将图的大小逐渐缩小,G1->G2->G3-G4。在G4阶段执行K路划分,然后在uncoarsening阶段将图中的原始节点映射到G4划分的cluster中。


METIS的安装:用户需要到Karypis Lab的官网下载最新的METIS安装包,目前最新版本为METIS 5.1,然后解压软件包。需要保证系统上已经安装了C编译器和GNU make和C Make 2.8,根据操作系统的位数修改metis.h文件中的IDXTYPEWIDTH常量的值为32或者64,然后在metis底层文件下执行make指令,既可以完成安装。


METIS的使用:以gpmetis为例,其使用方法为 gpmetis [options] graphfile nparts。gpmetis是编译生成的可执行文件,[options]是执行gpmetis可选项,graphfile是将要划分的文件名,nparts是用户指定的划分的cluster的个数。用户通过配置options的-ptype参数可以指定gpmetis切分方式,-ptype = rb时,使用的是多层次递归二分切割算法,-ptype = kway时,使用的是多层次k路划分算法(默认值)。-ctype指定了coarsen操作时的策略,-ctype = rm时,随机匹配,-ctype = shem时使用SHEM(Sorted heavy-edge matching)方法进行匹配(默认值)。


METIS输入和输出文件的格式:输入文件格式如下图所示。

METIS-一种图切分的软件包(简介)_第2张图片

左图是无权重图,第一行是顶点个数和边的条数。除第一行之外,第 i 行表示 i-1 节点连接的顶点编号。比如第2行表示的是顶点1与5,3,2顶点之间有边直接相连。右图是有权图,第一行表示顶点个数和边的条数,以及format格式为带权重图。第 i 行表示 i-1 节点连接的顶点编号,紧跟边的权重值。


图划分输出文件格式非常简单,一共有n行(n个顶点的图),每行一个整数表示该节点所属cluster的编号。




你可能感兴趣的:(C/C++,Tools,Algorithm,METIS,图划分,graph,partition,图切分,gpmetis)