7

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

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

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

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

4

1 回答 1

5

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

这种类型的图称为锦标赛,路径是哈密顿路径。Bub,我有好消息告诉你,如果图是强连接的,那么证明存在哈密顿量。强连接只是意味着每个节点都可以从每个节点到达,服从边的方向,所以继续添加边直到这是真的。

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

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

于 2017-09-12T14:01:03.243 回答