algorithm - 我有一个算法问题,必须尽可能公平地轮流安排团队

标签 algorithm scheduling

我有一个学校项目,我必须想出一种算法来安排 4 支球队在一个球场上打 Volley ,这样每支球队的比赛时间都尽可能接近。

如果你总是让获胜者留在场内,让失败者轮换出场,那么排名第 4 的球队将永远不会参加比赛,而排名第一的球队将永远参加比赛。 目标是让每个人玩的时间相同。

最简单的答案是第 1 队打第 2 队,然后第 3 队打第 4 队,然后不断切换,但是第 1 队永远无法打第 3 队或第 4 队,依此类推。

所以我正在尝试找出一种算法,让每个人都可以在某个时候与其他人比赛,而不会让一个团队比其他任何团队缺席更多。

建议?

最佳答案

这个怎么样:制作一个大小为 NC2 的哈希表 H,在本例中为 6。它看起来像:

H[12] = 0
H[13] = 0
H[14] = 0
H[23] = 0
H[24] = 0
H[34] = 0

我假设生成 key 是微不足道的。

现在要安排一场比赛,扫描哈希并选择具有最低值的键(一次通过)。由键表示的团队进行游戏,您将值加一。

编辑: 要添加任何团队都不应等待太久的另一个约束,请创建另一个哈希 W:

W[1] = 0
W[2] = 0
W[3] = 0
W[4] = 0

每场比赛结束后,未参加比赛的球队的 W 值增加 1。

现在,如果有多个球队组合的比赛得分较低,那么在选择比赛最少的球队时,请借助此哈希来确定接下来必须比赛的球队。

关于algorithm - 我有一个算法问题,必须尽可能公平地轮流安排团队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1751935/

相关文章:

communication - 如何让员工更多地参与?

algorithm - 循环检测算法

c - 二分查找代码中出现什么样的错误?

algorithm - 如何计算由二维点序列形成的多边形数量?

linux - linux调度器如何决定一个进程是实时的、交互式的、批处理的

java - 有时在计划任务中没有任何内容打印到 servlet 的输出流

php - 如何优化这个算法

algorithm - 计算两个经纬度点之间的距离? (哈弗斯公式)

operating-system - 如何区分 I/O 绑定(bind)和 CPU 绑定(bind)作业?

Java 自调度程序/服务?