Metis

图划分

目标:将图划分为几个包含差不多相等的顶点个数的部分,并且这些部分之间的边数目尽可能地小。(若是有权重的 ,则是各个划分内部的权重和差不多相等,各划分之间的权重尽可能小)


k路划分:

可以不断地执行二路划分 递归的执行 logk 次:例如要求 4 个,那么递归执行 log4 即两次二分,那么就变成了四块。


Coarsening Phase

多个节点合成一个节点,有以下几点要注意:

  1. 节点的权值为合成的结点的总个数
  2. 为保持连通性,新的边为原来的并集
  3. 边的权值为并起来的边的个数之和

两种方法:

  1. 随机匹配,匹配上的点合成一个节点
  2. 有高度连接的点合成一个点

第二种方法适用于 VLSI 因为其中可能有很多连接紧密的节点。

第一种方法:
一个匹配是 maximal 的,为如果图中任何一个没被选入匹配的边的至少一个端点被匹配了。也即不能有这样的两个邻接点,他们都没被选中,这样的话这个匹配就不是 maximal 匹配

maximal 匹配中,拥有最大的边的数目的是 maximum 匹配

显然,计算 maximum 匹配要比普通的 maximal 匹配消耗的多。

G0 若是 maximal 的,则 Gi 仍是 maximal 的

Random Matching:
随机的访问图上的点,如果遇到一个没有被 match 的点,那我们就随机的找一个这样的点的邻接点,如果存在这样的一个邻接点 v,我们就将边 (u,v) 加入 match,表示 u 和 v
match 了,如果没有这样的一个点,那么 u 就保持 unmatched。复杂度为 O(|E|)。因为每次都是合并两个点,所以最多减少一半的点,所以这一轮过后不可能少于原图的一半的点的数目


Partitioning Phase

目的:划分成两个差不多大小的顶点集合(weight 差不多),以及 edge-cut 尽可能小(两个集合间边个数或权值之和尽可能小)

此时的图已经尽可能小了(点的数目小于 100 个)

Kernighan-Lin Algorithm (KL):
首先将图分为两半 A 和 B,定义 gain gv(对于v来说) 为,对 v 的邻接点 u,若 u 和 v 属于不同分区,将(u,v)其权重加起来,减去顶点属于同一分区的(u,v)权重之和。如果 gv 是正的,则将 v 移动到另一个区域中,
并且将 edge-cut 减小 gv。如果 gv 是负数,则移动到另一边并且 edge-cut 加上这个负数的绝对值(理解为减去这个负数)。

如果 v 从一边移动到了另一边,要更新 v 的邻接节点的 gain 值。

给出这样的一个定义,KL 算法不断地从较大的一边中选出 gain 最大的 v 并将其移动到另外一边。在移动 v 后,标记它那么同一个迭代中不会再考虑它,它的邻接节点被 update,在一个迭代内:原始的 KL 算法会一直
移动直到所有节点都被动过了,现在论文给出的算法是 x 次移动之后 edge-cut 就不会再降低了,反而可能会增加(gv是负数的情况),设置 x 为 50 次(即一个迭代 50 次交换)


Uncoarsening Phase

在从 Gi+1 变为 Gi 的过程中,由于 Gi 更加精细了,所以可以有更好的划分方式,基本思想是从 A 和 B 之间选择两个子集合,交换他们能得到更少的 edge-cut。

Kernighan-Lin Refinement:
首先,将 Gi+1 的划分作为 Gi 的划分(因为他已经是一个好划分了),KL 算法将用 3~5 个迭代让它变成一个更好的划分。
在这种情况下,只有一小部份的顶点交换才能让他更好,更多的其他的交换只会让他更差,所以一个迭代内还是只交换 50 次。
KL 算法此时的复杂度取决于将顶点插入合适的数据结构的时间。也就是即使我们减少了交换顶点的数量,总体的时间复杂度也并不会大幅的下降。

problem

  1. 没有考虑网络拓扑和带宽信息
  2. 搜索空间很大,图很多,规模很大的时候很难做并行化,运行时间较长

metis 论文串行图划分笔记相关推荐

  1. 【Python爬虫】从零开始爬取Sci-Hub上的论文(串行爬取)

    [Python爬虫]从零开始爬取Sci-Hub上的论文(串行爬取) 维护日志 项目简介 步骤与实践 STEP1 获取目标内容的列表 STEP2 利用开发者工具进行网页调研 2.1 提取文章链接和分页链 ...

  2. metis 多线程图划分论文笔记

    多线程图划分 目的 利用多线程来完成图划分,从而达到提高效率的作用. 定义 balance: balance 是用来衡量 k 划分有多么的平等的. balance 定义为 k * max_i{η(V_ ...

  3. AD9910高速集成DDS芯片(芯片阅读笔记-串行模式篇-22个寄存器SPI通信周期控制)

    文章目录 引言 串行编程 利用官方软件得到寄存器值 福利连接 引言 本文为AD9910的芯片阅读笔记,本文并不是对芯片手册的纯粹照搬,所以建议结合芯片手册阅读.通过对AD9910芯片手册的理解,然后再 ...

  4. windows 安装metis_图划分软件Metis的使用(win10+vs2017)

    Metis是由Karypis Lab开发的一个具有强大功能的图划分软件包,可用于划分不规则图(graph).网格(mesh)以及计算稀疏矩阵(Sparse Matrices)的Fill-Reducin ...

  5. 图划分软件Metis的使用

    Metis是由Karypis Lab开发的一个具有强大功能的图划分软件包,可用于划分不规则图(graph).网格(mesh)以及计算稀疏矩阵(Sparse Matrices)的Fill-Reducin ...

  6. 使用METIS软件包进行图划分

    目录 0 前言 1 安装METIS 2 安装CMake GUI 3 用CMake GUI编译METIS 4 修改gk_arch.h文件 5 用VS生成解决方案 6 在VS中进行图划分 参考文献 0 前 ...

  7. 图划分(Graph PartitionRe-ordering): METIS(5.x)ParMETIS(4.x)使用实践

    图划分(Graph Partition&Re-ordering): METIS(5.x)&ParMETIS(4.x)使用实践 学习METIS&ParMETIS用法:阅读手册和示 ...

  8. STM32学习笔记一、 IO模拟串行通讯

    代码下载链接:实验五.USART-IO模拟.zip-嵌入式文档类资源-CSDN下载 文档下载链接:UART数据波形分析_uart波形-硬件开发文档类资源-CSDN下载 首先对UART数据波形进行分析: ...

  9. 锁与并发工具包与线程池与LockSupport与Fork/Join框架与并行流串行流与阻塞队列与JPS,jstack命令查看死锁查看线程状态与AQS个人笔记九

    朝闻道,夕死可矣 本文共计 86564字,估计阅读时长1小时 点击进入->Thread源码万字逐行解析 文章目录 本文共计 86564字,估计阅读时长1小时 一锁 二Java中13个原子操作类 ...

最新文章

  1. Redis实战(2)安装和试用
  2. hibernate关联关系(多对多)
  3. [PAT乙级]1011 A+B 和 C
  4. Ubuntu中安装Eclipse的SVN插件——subclipse
  5. 理论 | 当 Spring Boot 遇上了消息队列......
  6. 有未经处理的异常(在 xx.exe 中): 堆栈 Cookie 检测代码检测到基于堆栈的缓冲区溢出。
  7. thinkcmf apache rewrite文件
  8. 家居有线网络布线方案(转)
  9. simplemind pro for Mac(思维导图)
  10. ubuntu 环境变量配置
  11. 经典卷积神经网络 LeNet 动手学深度学习v2 pytorch
  12. 【备忘】LAMP兄弟连李明老师讲Linux[更新完毕-共享完毕]
  13. 【GIS】开源GIS简介
  14. 《图解HTTP》笔记
  15. UI自动化测试神器->Cypress
  16. matlab实时编辑器怎么用,Markdown 实时编辑器
  17. 第二章 爬取案例-链家租房数据获取 2021-09-16
  18. java.util.Date中的loe_有趣的widget-日期和时间
  19. Ubuntu20.04切换阿里源镜像(清华源、网易源)
  20. 保姆级 IGV 基因组浏览器使用指南(图文详解)

热门文章

  1. Pycharm 让编辑区/代码区背景色为白色或与主题色不同
  2. 【WangEditor】使用富文本编辑器 WangEditor 实现用户自定义图片大小(改js源码)
  3. 华为交换机的远程登录和密码设置
  4. 苹果酸-天冬氨酸穿梭
  5. Dilated Convolution膨胀卷积感受野详解
  6. 1、Multisim14 安装教程
  7. vmware workstation 8序列号
  8. websocket 单机服务 和 分布式集群解决方案
  9. python宇晨_第三十届全国青少年科技创新大赛青少年科技创意作品中学组.PDF
  10. 【WebLogic使用】3.WebLogic配置jndi数据源