08 | 组合:如何让计算机安排世界杯的赛程?

文章讲述了如何用组合理论安排足球世界杯比赛,解释了主客场制对比赛场次的影响,并通过代码实现从32支球队中选取比赛对手的组合。还介绍了组合在自然语言处理中的应用,如处理词组和避免排序问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2018 年足球世界杯当时激烈的赛况你现在还记忆犹新吧?你知道这场足球盛宴的比赛日程是怎么安排的吗?如果现在你是组委会,你会怎么安排比赛日程呢?我们可以用上一节的排列思想,让全部的 32 支入围球队都和其他球队进行一次主客场的比赛。

自己不可能和自己比赛,因此在这种不可重复的排列中,主场球队有 32 种选择,而客场球队有 31 种选择。那么一共要进行多少场比赛呢?很简单,就是 32x31=992 场!这也太夸张了吧?一天看 2 场,也要 1 年多才能看完!即使球迷开心了,可是每队球员要踢主客场共 62 场,早已累趴下了。

好吧,既然这样,我们是否可以取消主客场制,让任意两个球队之间只要踢 1 场就好啦?取消主客场,这就意味着原来两队之间的比赛由 2 场降为 1 场,那么所有比赛场次就是 992/2=496 场。还是很多,对吧?

是的,这就是为什么要将所有 32 支队伍分成 8 个小组先进行小组赛的原因。一旦分成小组,每个小组的赛事就是 (4x3)/2=6 场。所有小组赛就是 6x8=48 场。

再加上在 16 强阶段开始采取淘汰制,两两淘汰,所以需要 8+4+2+2=16 场淘汰赛(最后一次加 2 是因为还有 3、4 名的决赛),那么整个世界杯决赛阶段就是 48+16=64 场比赛。

当然,说了这么多,你可能会好奇,这两两配对比赛的场次,我是如何计算出来的?让我引出今天的概念,组合(Combination)。

组合可以说是排列的兄弟,两者类似但又有所不同,这两者的区别,不知道你还记得不,上学的时候,老师肯定说过不止一次,那就是,组合是不考虑每个元素出现的顺序的。

从定义上来说,组合是指,从 n 个不同元素中取出 m(1≤m≤n)个不同的元素。例如,我们前面说到的世界杯足球赛的例子,从 32 支球队里找出任意 2 支球队进行比赛,就是从 32 个元素中取出 2 个元素的组合。如果上一讲中,田忌赛马的规则改一下,改为从 10 匹马里挑出 3 匹比赛,但是并不关心这 3 匹马的出战顺序,那么也是一个组合的问题。

对于所有 m 取值的组合之全集合,我们可以叫作全组合(All Combination)。例如对于集合{1, 2, 3}而言,全组合就是{空集, {1}, {2}, {3}, {1, 2}, {1,3} {2, 3}, {1, 2, 3}}。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值