【发布时间】: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-B 和2-C 与3-B 和3-C 之间进行选择。因为前者是更好的选择(置信度总和是0.9 而不是0.6),我们选择2-B 和2-C。
分别将1, 2, 3 分配给A, B, C 后,4 将一无所有。所以,它不会。
我可以使用某种蛮力算法来做到这一点,但我正在寻找一种优雅的方式来做到这一点。对我来说,它看起来像一个图算法,但想不出比蛮力更好的东西。
有没有更优雅的方法可以用于这个算法?
此时语言无关紧要,但我使用的是 python。
【问题讨论】:
-
注意:我愿意接受有关改进标题的建议。我不认为它是非常具有描述性的。
-
如果你想最大化置信度的总和,你可以看看匈牙利算法