在单淘汰赛中,例如网球大满贯冠军赛——每名输掉的选手都将立即从随后的几轮淘汰赛中淘汰,直到确定一名选手为止。如果比赛开始时有 N名选手,请回答以下问题。
- 获得胜利所需的比赛总数是多少?
- 这样的比赛有几轮?
- 根据锦标赛产生的信息,还需要进行多少场比赛才能确定第二好的球员?
解决方案
- 由于我们在每场比赛中淘汰一名球员,因此只有一名获胜者。然后,总共需要淘汰 N-1名玩家。因此,需要N-1场比赛才能获胜。从数学上讲,如果有N 个玩家,那么我们将在第一轮进行 N/2场比赛,在第二轮进行N/4场比赛,依此类推,直到最后一轮我们有 1场比赛。因此,匹配的总数只是几何级数的总和,项N/2, N/4 直到 1 。
假设总共有N个玩家,那么获得胜利者的比赛总数:
=> N/2 + N/4 + N/8 + …. + 2 + 1
This is a geometric progression with
a = N/2, r = 1/2
The number of terms in the progression will beHence,
=> N/2(1 – (1/2)^{log_2N}) / 1 – 1/2)
=> N(1 – 1/2^{log_2N})
=> N(1 – 1/N)
=> (N – 1) - 如果N是 2的幂,则锦标赛的总轮数为log 2 N ,因为在每一轮中,一半的玩家被淘汰,直到只剩下一个玩家。如果N不是 2的幂,则轮数是2的最小幂,即大于或等于 N,即等于ceil(log 2 N) 。
- 第二好的玩家可以是输给获胜者而不是其他任何人的任何玩家。可以让这些玩家参加他们自己的单场淘汰赛。由于获胜者将出现在锦标赛的所有轮次中,因此他们总共将是ceil(log 2 N)玩家,争夺第二好的玩家。因为,对于N人锦标赛,进行N-1场比赛来找出获胜者,因此,需要ceil(log 2 N) – 1场比赛来确定竞争者中的获胜者,这将是我们第二好的球员。