一尘不染

有效地选择互斥对

algorithm

这是某种类型的蛮力算法可以解决的问题,但是我想知道是否存在一些有效的方法。

假设我们有以下整数对

 (1, 3), (2, 5), (4, 7), (2, 7), (10, 9)

我们想找出什么是互斥对的最大数量。

互斥对是指没有任何共同整数的对。

例如,我们不能同时选择(2,5),(2,7),因为两个对都包含2。

在上述情况下,4是一个解决方案,因为我们可以选择以下互斥对:

      (1, 3), (2, 5), (4, 7), (10, 9)

因此,总共有4个最大对。

我想知道是否有有效的方法。


阅读 206

收藏
2020-07-28

共1个答案

一尘不染

您的问题等同于在图形上找到最大匹配。图的节点是整数,而对(a,b)是图的边。匹配是一组成对的非相邻边,等同于说同一整数不在两个边中出现。

解决此问题的多项式时间解决方案是Blossom算法,也称为Edmond算法。将细节包含在此处的答案中太复杂了。

2020-07-28