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

时间:2016-11-13 04:42:54

标签: algorithm sorting user-input transitivity

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

有一个问题。我的笑话偏好不是总订单。它缺乏传递性。例如,我可能认为B在呈现它时比A更有趣,并且C比B更有趣,但是当以某种方式呈现A和C时,我发现A比C更有趣。如果“>”意味着“比...更有趣” ,“这意味着C> B和B> A 暗示C>答:所有排序算法的正确性取决于此。

但似乎应该有一个算法可以对笑​​话列表进行排序,以便顶部的那个大多数优先于其他笑话,而底部的那个是至少优先于其他笑话,即使有个别例外。

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

1 个答案:

答案 0 :(得分:4)

如果您将决策表示为有向图,其中每个笑话都是一个节点,并且每个有向边指示一个笑话比另一个好,那么您可以通过构建跟随边缘的路径并访问每个节点来检索排序一次。

这种类型的图形称为锦标赛,路径是哈密尔顿路径。我给你带来了好消息Bub,如果图形连接很强,就会证明汉密尔顿主义存在。强连接只意味着每个节点都可以从每个节点到达,遵循边缘的方向,所以继续添加边缘,直到这是真的。

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

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