如何创建独特的单个消除支架

时间:2014-08-07 15:39:10

标签: python math combinatorics

我正在寻找一种方法来为N-player(N是2的强力)单次淘汰(淘汰赛)支架锦标赛创造所有可能的独特起始位置。

假设我们有玩家' A' B'' C'和' D'并希望找出所有可能的初始职位。然后比赛看起来像这样: A vs B,C vs D.然后是冠军(AB)vs冠军(CD)。

(我将使用符号(A,B,C,D)进行上述设置)

那些只是4个元素的所有可能排列,有4个!= 24个,并且很容易生成它们。

但是,自从

以来,它们对于锦标赛来说并不是独一无二的

(A,B,C,D),(B,A,C,D),(B,A,D,C),(C,D,A,B),......

会导致所有相同的比赛。

在这种情况下,我认为这套独特的设置是:

(A,B,C,D),(A,C,B,D),(A,D,C,B)

所有其他组合将是"对称"。

现在我的问题是针对N = 2 ^ d球员的一般情况:

  • 有多少这样独特的设置?
  • 这是一个我可以查看的已知问题吗? Haven还没找到。
  • 有一种生成它们的方法吗?
  • 这个方法在python中的外观如何?

(通过感知有用性排名的问题)

我对this entry感到厌烦,但它并没有真正处理我在这里讨论的问题。

1 个答案:

答案 0 :(得分:1)

  

有多少这样独特的设置?

让我们有n支队伍。有n!按顺序列出它们的方法。我们将从那开始。然后处理过度计数。

假设我们有8支球队。一种可能性是

ABCDEFGH

交换第1队和第2队不会有所作为。我们可以

BACDEFGH

和同样的球队比赛。由2分来解释。交换3和4也不会。再次除以2。与5队和6队相同。总共有4组2人(第一轮4场比赛)。所以我们取n!,除以2 ^(n / 2)。

但事情就是这样。我们可以订购

CDABEFGH

在这个例子中,我们将前两个交换为第三个和第四个。出于此目的,CDABEFGH与ABCDEFGH无法区分。所以在这里,我们可以除以2 ^(n / 4)。

同样可能一次又一次地发生。最后,起始位置的总数应为n!/(2 ^(n-1))。

我们也可以认为它有点不同。如果我们查看https://stackoverflow.com/posts/2269581/revisions,我们也可以将其视为一棵树。

       a         b (runner up)
   a       e
 a   c   e   h
a b c d e f h g

这里有8个!我们如何安排在基地的所有字母,确定一个方法,使支架解决。如果我们看看起始位置,谁赢了就没关系。总共有7场比赛(而且每场比赛都有不同的结果),所以我们除以2 ^ 7来计算这个数量。