不一致(非传递)人类偏好的排序算法

Sorting algorithm for inconsistent (non-transitive) human preferences

假设我有一个文件,每行都有一行(笑话)。我想按照我觉得它们有多好笑来对这些笑话进行排序。我的第一个想法是实现任何排序算法(最好是进行尽可能少的比较的算法)并让比较算法接受我的输入;我只是坐在那里,选择它给我的每一对笑话中的哪一个更有趣。

这有问题。我的笑话偏好不是一个完整的顺序。它缺乏传递性。例如,我可能认为 B 在呈现时比 A 更有趣,而 C 比 B 更有趣,但是当呈现 A 和 C 时我发现 A 比 C 更有趣。如果“>”表示“比...更有趣, ” 这意味着 C > B 和 B > A 确实 而不是 暗示 C > A。所有排序算法的正确性都取决于此。

但似乎仍然应该有一种算法来对笑话列表进行排序,以便顶部的那个比其他笑话 更受欢迎,而排在最前面的那个bottom 比其他笑话最不受欢迎,即使有个别例外。

我不知道如何 Google 这个。这种偏好排序有算法吗?答案 不适用,因为它强制用户的偏好是可传递的。

如果您将您的决定表示为有向图,其中每个笑话都是一个节点,每个有向边表示一个笑话比另一个好,那么您可以通过构建沿着边和访问的路径来检索顺序每个节点正好一次。

这种图称为Tournament,路径为哈密顿路径。老兄,我有好消息要告诉你,如果图是强连通的,则证明哈密顿量存在。强连接只是意味着每个节点都可以从每个节点到达,服从边缘的方向,所以不断添加边缘直到这是真的。

锦标赛:https://en.wikipedia.org/wiki/Tournament_(graph_theory)

哈密顿路径:https://en.wikipedia.org/wiki/Hamiltonian_path