根据人们的首选列表为人们分配他们最喜欢的值的算法是什么?

What's the algorithm to assign people their most preferred value based on a list of their top choices?

假设用户输入他们最喜欢的前三个(或 N 个)棒球位置:

// first element of each list being most preferred
userA = ["backcatcher", "center field", "short stop"];
userB = ["pitcher", "backcatcher", "center field"];
userC = ["pitcher", "center field", "short stop"];
userD = ["short stop", "backcatcher", "pitcher"];
...

users = [userA, userB, userC, userD ...];

尽可能为每个用户分配最喜欢的位置的算法是什么?

我知道这个问题和解决方案肯定有一些名字,但我在网上看了很多,但还没有完全找到它。

它与 Borda count and the Condorcet method 类似,但它接受用户的偏好列表并确定每个选择的总体偏好程度,而不是每个用户的偏好程度。

我找到的最接近的是 the stable marriage problem,它很相似,但需要两组首选列表,即。该位置 "short stop" 还会列出它最想玩的用户。

有谁知道这个问题叫什么?提前致谢。

这是Assignment problem. You could use, for instance, the Hungarian Algorithm

你只需要想出一种方法将 user/player 偏好转化为成本。也许当一个人得到他们的第一选择时,成本是 -3,第二选择是 -2,第三选择是 -1,等等。你如何做取决于你的问题的性质。你如何看待各种权衡最终编码在你给算法的成本中。