关于排序的问题..困惑!

时间:2011-06-05 12:07:22

标签: algorithm puzzle

有一个问题,我也有解决方案,但我感到困惑,我无法理解..如果有人能提出他们的想法......


问题

有128名参加网球锦标赛的placyer。假设“x beats y”关系是传递性的,即对于所有玩家A,B和C,如果A击败B和B击败C,则A击败C.

为了找到最好的球员,我们需要组织的最少比赛数量是多少?你需要多少场比赛来找到最好的和第二好的球员?


答案

首先我们考虑找到最佳球员的问题。每个游戏消除一个玩家和128个玩家,因此127个匹配是必要的并且也足够。 >>>>理解....

为了找到第二好的,我们注意到唯一的候选人是被最终被认为是最好的球员击败的球员 - 其他人输给了不是最好的球员。 >>>>理解(那些被最好的球员输掉的球员是第二好的球员候选人?)

为了找到最好的球员,我们组织比赛的顺序是无关紧要的 - 我们只是从候选人中挑选出一对,并且从候选人中删除了谁。

然而,如果我们以任意顺序进行,我们可以从最好的球员开始,击败其他127名球员,然后失去的球员需要在他们中间打126场比赛以找到第二好的球员。 >>>>>>>>>>> .. confused

我们可以通过将比赛组织成二叉树来做得更好 - 我们对任意一对玩64场比赛的球员。在这些比赛之后,我们留下了64名候选人;我们再次任意配对,他们打了32场比赛。以这种方式进行,我们组织了127场比赛,以找到最好的球员和只打了7场比赛的冠军。因此,我们可以通过在7名输给最佳球员的球员之间组织6场比赛找到第二好的球员,总共134场比赛。 >>>>>>>混淆......

1 个答案:

答案 0 :(得分:1)

如果您将锦标赛作为二叉树运行,最终将会有两个 A B 的玩家,这些玩家是他们分支中最好的 在树中。

如果 A 击败 B ,则 A (因为传递性)优于其他所有玩家。但是,没有任何保证 B 因此是第二好的,即比树中 A :s分支中的每个人都要好。

有一组7名球员是树的一些分支中最好的并且都被 A 击败 - 我们不知道其中哪一个是最好的(因此总体上排名第二,直到他们(直接或传递)相互比赛。