与异常值匹配的最小成本



给定一个完整的二部图G=(V1,V2;E(,|V1|=|V2|=n和每条边的非负代价,最小代价二部匹配问题找到由一条边连接的G到n对顶点的划分,使得边代价的总和最小化。

这个问题可以使用最小成本流算法来解决,方法是添加连接到每个权重为0、容量为1的组的源顶点和汇顶点。

但是,如果我们得到一个数字m<n,并且想要找到m对的分区,使得总成本最小化?

起初,我认为我们可以在开始时添加另一个顶点,该顶点连接到权重为0、容量为m的原始源,并将其称为新源,这样最大流量将为m,它应该只选择m对。

然而,当我多次使用boost的最小成本流函数运行该算法时,出现了两个大问题:

1( 边中的流量并不总是整数(例如,流量不是0或1,而是0.5(。

2( 存在许多可能的(非整数(解决方案,因此即使对于具有不同顺序的相同输入,算法也会输出不同的结果。

当我准备去的那一刻,这两个问题都解决了。

所以我的问题是:有没有办法解决这个问题?如果没有,是否有另一种算法可以解决带异常值的最小代价二分匹配问题?

我刚刚发现了我在问题中描述的算法,并说它不起作用,实际上起了作用,这是因为boosts最小成本流函数内引起的浮点误差,当我将所有成本乘以10000时,所有问题都得到了解决。

最新更新