【问题标题】:Best way to match two groups of objects based on confidences根据置信度匹配两组对象的最佳方法
【发布时间】:2020-10-02 13:06:47
【问题描述】:

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

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

还假设我有 4 个整数和 3 个字母。他们的通信是1-A, 2-B, 3-C, 4-None。 (我试图得到这个结果)

另外,我知道整数和字母之间的关系。

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-C3-B3-C 之间进行选择。因为前者是更好的选择(置信度总和是0.9 而不是0.6),我们选择2-B2-C

分别将1, 2, 3 分配给A, B, C 后,4 将一无所有。所以,它不会。

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

有没有更优雅的方法可以用于这个算法?

此时语言无关紧要,但我使用的是 python。

【问题讨论】:

  • 注意:我愿意接受有关改进标题的建议。我不认为它是非常具有描述性的。
  • 如果你想最大化置信度的总和,你可以看看匈牙利算法

标签: python algorithm graph


【解决方案1】:

这被称为assignment problem。这个link 解释了可以解决它的算法之一,Hungarian algorithm,并提供了一些您应该能够复制和粘贴的 C 代码。

【讨论】:

  • 太好了,看起来这就是我想要的。让我进一步深入探讨。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 2017-06-07
  • 2020-11-29
  • 1970-01-01
  • 1970-01-01
  • 2019-03-01
相关资源
最近更新 更多