智力题:赛马问题


题目描述:

一共有 25 匹马,每匹马的速度是固定的,一共有 5 条赛道(也就是说一场比赛最多 5 匹马参加)。最少几场比赛才能选出最快的那匹马?前三呢?

题目分析:

  通过题目我们可以知道马之间的比较是具有传递性的,也就是说 A 比 B 快,B 比 C 快,可以得到 A 比 C 快。那么我们要充分利用每一次比赛得到的 4 个快慢关系。
  先将 25 匹马分为 5 组进行 5 次比赛,可以得到

  • A1 > A2 > A3 > A4 > A5
  • B1 > B2 > B3 > B4 > B5
  • C1 > C2 > C3 > C4 > C5
  • D1 > D2 > D3 > D4 > D5
  • E1 > E2 > E3 > E4 > E5

  我们再把每个小组的第一名进行一场比赛,假设有 A1 > B1 > C1 > D1 > E1。这个时候就可以知道 A1 是所有马中最快的了。一共需要 6 场比赛。
  这个时候我们来分析前三有哪些可能。利用比较的传递关系,只要知道有任意三匹更快的马,那么这匹马就可以淘汰了。比如 A4 和 A5 至少比 A1、A2、A3 慢,那么可以淘汰。B3 ~ B5 则肯定比 A1、B1、B2 慢,可以淘汰。同理 C 组只有 C1 有可能前三,而 D、E 两组则可以全部淘汰。这个时候只需要对 A2、A3、B1、B2、C1 进行一场比赛就可以知道第二和第三名。一共需要 7 场比赛。

如果是要选出前五呢?

  通过前面的 7 场比赛,我们也已经知道了前三。

  • 假设前三是 A1、A2、A3,则四五名的可能有 A4、A5、B1、B2、C1,只需再进行一场比赛。
  • 假设前三是 A1、A2、B1,则四五名的可能有 A3、A4、B2、B3、C1、C2、D1,不过在第 7 场比赛中我们是知道 A3、B2、C1 的大小关系的。因此它们中最慢的一个可以直接淘汰,并且同组更慢的马也可以直接淘汰,剩下的 5 匹马再进行一场比赛即可。
  • 假设前三是 A1、B1、C1,则四五名的可能有 A2、A3、B2、B3、C2、C3、D1、D2、E1,一共 9 个可能,而在第 7 场比赛中我们已经知道 A3、B2 的相对排名,可以淘汰掉它们中较慢的一个(较慢的那个肯定也慢于 A2,所以至少慢于两个可能的四五名,若 B2 淘汰则 B3 也可以淘汰),剩下的马无法再进行淘汰,仍然多于 5 匹,则至少还需要 2 场比赛。

  通过以上的分析我们可以知道,至多再多 2 场比赛就可以选出前五。共 9 场。

如果是 64 匹马 8 条赛道选前四呢?

  按照同样的思路,先分为 8 组,进行 8 场比赛,再进行小组排名第一的 1 场比赛,一共 9 场比赛可以选出第一名。
  剩下的二三四名的可能选择有 A2、A3、A4、B1、B2、B3、C1、C2、D1 一共 9 匹马,则我们不让 A2 参赛,剩下的 8 匹马进行一场比赛,若 A3 在这场比赛中第一,则说明 A2 是全场第二,一共就是 10 场比赛。否则还需加赛一场确定 A2 的排名,一共是 11 场比赛。

总结

  通过这些例题我们可以知道,做法就是利用比较的传递性,可以很快地淘汰后面的马匹,从而快速缩小查找范围,达到减少比赛场次的目的。