二分图匹配及多目标追踪SORT

匹配

将需要配对的两种对象分别作为 X、Y,匹配常如资源匹配和工作安排等,求配对关系或者给顶点和边赋权,求某种条件下的最优分配问题。可以用而二分图来解决匹配的问题。

二分图

二分图又称作偶图,是图论中一个特殊的模型。设 G =(V,E)是一无向图,若顶点 V 可以分割为两个互不相交的子集 A 和 B 且图中每条边(i,j)所关联的两个顶点 i 和 j 分别属于这两个不同的顶点集,则称 G 是一个二分图。其充要条件是:图 G 中至少存在两个点,且图中所有回路的长度均为偶数。简单来说,就是顶点集 V 可分割为两个互不相交的子集,且图中每条边依附的两个顶点都分别属于这两个互不相交的子集,且两个子集内的顶点不相邻。当图中的顶点分为两个集合,使得第一个集合中的所有顶点都与第二个集合中的所有顶点相连时,此时是一特殊的二分图,称为完全二分图

二分图匹配

如果 E 的子集 M 中任意两条边都没有公共端点,则 M 称为一个匹配。边数最多的匹配称为最大匹配,如果 X 中顶点全都出现在 M 中,则称为 X-完全匹配。若个匹配 M 既是 X-完全匹配 又是 Y-完全匹配,则称 M 是完全匹配。对最大匹配和完全匹配的寻找和判定,有广泛的应用背景。

如工作安排问题:课程和教师的一一安排。可抽象为一个二分图 G = ,其中 U 是教师的集合,V是课程的集合,E 中的边 表示某位教师 U 可以上课程 V。求最大匹配,即使得每门课都有老师教,有学生上。最大匹配可用匈牙利算法

匈牙利算法

  1. 任取一个匹配 M(可以是空集或者只有一条边)。
  2. 令 S 是尚未匹配的点(非饱和点)的集合。
  3. 若 S 为空,则 M 已是最大匹配,算法结束。否则执行第四步。
  4. 从 S 中取出一个非饱和点 u 作为起点,从起点开始走交错路 P(即接下来走的路径一条在匹配 M 中一条不在匹配 M 中,交替走两种类型的路径)。
  5. 如果 P 的终点也是非饱和点(即 P 是一个增广路),则令 M 与 P 异或并赋值给 M,回到第三步。
  6. 如果此时 P 都不是增广路,则将点 u 从 S 中去掉,再执行第三步。 

上面的教师课程问题:u1 ~ u6 为教师,v1 ~ v6 为课程。

  • 当前的匹配 M1 为 {(u2,v6),(u3,v1)},未匹配的点集 S1 为{u1,u4,u5,u6}。选择 u1 作为起点。选出增广路 P1 为{(u1,v1),(v1,u3),(u3,v3)},如下图:

将 M1 与 P1 异或,得到 M2 为{(u1,v1),(u2,v6),(u3,v3)},此时未匹配的点集 S2 为{u4,u5,u6}。

  • 选择 u4 作为起点,选出增广路 P2 为{(u4,v2)}。再将 P2 与 M2 异或,得到 M3 为{(u1,v1),(u2,v6),(u3,v3),(u4,v2)},此时未匹配的点集 S3 为{u5,u6}。

  • 选择 u5 为起点,选出增广路 P3 为{(u5,v3),(v3,u3),(u3,v1),(v1,u1),(u1,v4)}。将 P3 与 M3 异或,得到 M4 为{(u5,v3),(u2,v6),(u3,v1),(u1,v4),(u4,v2)} ,此时未匹配的点集 S4 为{u6}。

  • 选 u6 为起点,选出增广路 P4 为{(u6,v1),(v1,u3),(u3,v3),(v3,u5),(u5,v5)}。将 P4 与 M4 异或,得到 M5 为{(u5,v5),(u2,v6),(u1,v4),(u4,v2),(u3,v3),(u6,v1)} 。即得到一个最大匹配,也是一个完全匹配。

多目标追踪算法SORT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值