C#在运动中分配球队之间比赛的算法

时间:2010-09-02 23:28:08

标签: c# algorithm

可能重复:Help Me Figure Out A Random Scheduling Algorithm using Python and PostgreSQL

假设你有9支球队的分区,你希望他们分别打16场比赛。通常你会想要8场比赛(主场)和8场比赛(观众)。是否有一个已知的算法进入并随机分配匹配?

注意 - >它有时可能不起作用,所以你可以有不均匀的数字。 任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:3)

请参阅这些permutation算法

这个适用于你:Fisher–Yates shuffle

答案 1 :(得分:0)

有一种很简单的方法可以生成循环here。在第二轮中,您可以重复循环并添加交换回家。

如果你有一支奇数队伍,你只需要使用一个虚拟团队,让对手在一个特定的回合中再见,这会产生一个额外的回合。如果您更愿意提供双标题,那么您可以在其他轮次中分配额外的一轮。

答案 2 :(得分:0)

我认为你可以在二分图算法中使用最大匹配(例如,参见here),它在多项式时间内运行。

我们通过在“离开”的“home”子集和8个顶点(Ta1,...,Ta8)中分配每个团队T,8个顶点(Th1,...,Th8)来表示您的问题顶点的子集。

我们现在寻找“home”和“away”子集之间的最大匹配,使得匹配中的每个边(H,A)满足H在“home”子集中的属性,“A”在“离开”子集,H和A属于不同的团队。