最近在DETR(transformer)论文中看到bipartite matching一词,所以特地学习一下,bipartite matching是一个什么操作。个人理解,若有表述错误或不当的问题,还请各位大牛不吝赐教!!
bipartite matching -----二分图最大匹配------图论
二分图bipartite的概念
二分图(bipartite):将图的所有顶点分为两个集合,每条边对应的两个顶点分别属于这两个集合。设G=(V,E)是一个无向图,如果结点集V可分割为两个互不相交的子集(V1,V2),并且图中的每条边(i,j),所关联的两个结点i和j分别属于这两个不同的结点集,则称G为一个二分图。
匹配的概念
给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配。
如下图中红色边的集合算是一个匹配:
最大匹配
一个图的所有匹配中,边数最多匹配称为这个图的最大匹配。
求二分图最大匹配算法有:
匈牙利算法(Hungarian Algorithm),
最大流(Maximal Flow)