[学习笔记] 匈牙利匹配
匈牙利匹配算法 摘要 匈牙利匹配算法可以用来做目标跟踪,根据预测算法预测box与上一帧box的iou关系可以确定是否是上一帧的目标。 也是比较常用的二分图匹配算法。 概念 图G的一个 匹配 是由一组没有公共端点的不是圈的边构成的集合。 完美匹配 :考虑部集为X={x1 ,x2, ...}和Y={y1, y2, ...}的二部图,一个完美匹配就是定义从X-Y的一个双射,依次为x1, x2, ... xn找到配对的顶点 交错路:给定图G的一个匹配M,如果一条路径的边交替出现在M中和不出现在M中,我们称之为一条 交错路 增广路:而如果一条M-交错路径,它的两个端点都不与M中的边关联,我们称这条路径叫做 M-增广路 匈牙利算法的实质是寻找增广路,通过找到目标后改变之前匹配的结果完成最终的匹配。 算法 1.置M为空 2.找出一条增广路径P,通过取反操作获得更大的匹配M’代替M 3.重复2操作直到找不出增广路径为止 说穿了,就是你从二分图中找出一条路径来,让路径的起点和终点都是还没有匹配过的点,并且路径经过的连线是一条没被匹配、一条已经匹配过,再下一条又没匹配这样交替地出现。找到这样的路径后,显然路径里没被匹配的连线比已经匹配了的连线多一条,于是修改匹配图,把路径里所有匹配过的连线去掉匹配关系,把没有匹配的连线变成匹配的,这样匹配数就比原来多1个。不断执行上述操作