基于置信度匹配两组对象的最佳方式



我搜索了这个问题一段时间,但找不到任何相关的内容。

假设我有两种类型的对象,我想在它们之间创建一对一的对应关系。假设我的第一组是integers,第二组是letters。不知何故,我知道每个整数、字母对的置信度(权重/相关性等(。

还假设我有4个整数和3个字母。它们的对应关系是CCD_ 3。(我正试图得到这个结果(

此外,我知道int和字母之间的关系。

1 -> (A, 0.9)
2 -> (B, 0.5), (C, 0.4)
3 -> (B, 0.2), (C, 0.4)
4 -> (B, 0.1)

其余的是零,例如2 -> (A, 0)等。

在此示例中,1-A是一对高置信度0.9,并且没有其他整数与A匹配。因此,我将把这一对添加到匹配的对列表中。现在,我需要在2-B2-C之间进行选择,而不是在3-B3-C之间进行选择。由于前一种是更好的选择(置信度之和是0.9,而不是0.6(,我们选择2-B2-C

在分别将1, 2, 3分配给A, B, C之后,4将什么都没有。所以,这将是零。

我可以使用某种蛮力算法来实现这一点,但我正在寻找一种优雅的方法来实现。对我来说,它看起来像一个图形算法,但无法想出比蛮力更好的东西。

有什么更优雅的方法可以用于这个算法吗?

语言在这一点上并不重要,但我使用的是python。

这就是所谓的赋值问题。这个链接解释了可以解决这个问题的算法之一,匈牙利算法,并提供了一些你应该能够复制和粘贴的C代码。

最新更新