n連勝

 投稿者:山中和義  投稿日:2014年 5月 4日(日)14時13分31秒
  問題
1対1で、勝ち負けが決まる試合をします。
8人でトーナメントをすると、だれか1人が必ず1位になり、その人は3連勝しています。
つまり、8人いれば3連勝している人を100%の確率で、有限時間の間に作り出すことができます。

では、100連勝している人を100%の確率で、有限時間の間に生み出すためには、
最低でも何人必要でしょうか。ただし、トーナメント形式をとる必要はありません。


答え
(n+1)人の試合

アルゴリズム
(1) 誰か1人を仲間外れにしておく。
(2) 残りn人は全員看板(数字は「勝ち数」を意味する)を持ち、0と記入しておく。
(3) 以下のルールでひたすら試合を繰り返す。
 (a) 同じ数字を掲げた人と出会ったら試合をする。
 (b) 勝った人は看板の数字に1を足す。
 (c) 負けた人は看板の数字を0に戻す。
(4) やがて、看板の数字が0から(n-1)までのものが1つずつになる。
(5) 仲間外れにしていた1人が看板を持ち、0と記入する。
(6) 以下のルールでひたすら試合を繰り返す。
 (a) 同じ数字を掲げた人と出会ったら試合をする。
 (b) 勝った人は看板の数字に1を足す。
 (c) 負けた人は看板を捨てる。
(7) 最後の試合に勝った人がn連勝となる。
(終り)


●(3),(4)について
k人が 2^(k-1)-1 試合を行って、ひとりが (k-1)連勝となる。 残りは、0連勝となる。
証明
k=2のとき、
   ABc
 0:00
 1:01
のような、1試合を行う。

k=3のとき、
   ABCd
 0:000
 1:010
 2:011
 3:002
のような、3試合を行う。

k=4のとき、
   ABCDe
 0:0000
 1:0100
 2:0110
 3:0020
 4:0120
 5:0121
 6:0022
 7:0003
のような、7試合を行う。

k=m≧2のとき、
 m人が 2^(m-1)-1 試合を行って、ひとりが (m-1)連勝となる。 残りは、0連勝となる。
 ┌─── m 人 ───┐
  0,0,0, …, 0,0,(m-1)
と仮定する。

k=m+1のとき、
 ┌─── (m+1) 人 ───┐
  0,0,0, …, 0,0,0,     0

まず、最初のm人に対して、2^(m-1)-1 試合を行って、
 ┌─── (m+1) 人 ───┐
  0,0,0, …, 0,0,(m-1), 0

次に、0連勝のm人( (m-1)連勝の1人を除いたもの)に対して、2^(m-1)-1 試合を行って、
 ┌─── (m+1) 人 ───┐
  0,0,0, …, 0,0,(m-1), (m-1)

とできる。

(m-1)連勝どうしで、もう1試合して、
 ┌─── (m+1) 人 ───┐
  0,0,0, …, 0,0,0,      m

よって、
(2^(m-1)-1)+(2^(m-1)-1)+1=2^m-1 試合を行って、ひとりが m連勝となる。 残りは、0連勝となる。
(終り)


これより、
      ┌──── n 人 ────┐
       A B C      D     E     F
k=n  のとき、0,0,0, …, 0,    0,    (n-1)
      ┌── (n-1) 人 ──┐
k=n-1のとき、0,0,0, …, 0,    (n-2),(n-1)
      ┌─ (n-2) 人 ─┐
k=n-2のとき、0,0,0, …, (n-3),(n-2),(n-1)
   :
   :
      ┌3人┐
k=3  のとき、0,0,2, …, (n-3),(n-2),(n-1)
      ┌2┐
k=2  のとき、0,1,2, …, (n-3),(n-2),(n-1)


よって、Σ[k=1,n]{ 2^(k-1)-1 } = 2^n-1-n 試合


●(6)について
       ┌┴┐
      ┌┴┐F  Fは(n-1)勝
     ┌┴┐E  Eは(n-2)勝
    ┌┴┐D  Dは(n-3)勝
     :
   ┌┴┐
  ┌┴┐C  Cは2勝
 ┌┴┐B  Bは1勝
 g   A  Aは0勝
の n 試合


●(7)について
全体で、(2^n-1-n) + n = 2^n-1 試合




具体的に見てみると、

・n=1の場合
(3),(4)について、
   Ab
 0:0
のような、0試合

(6)について、
 ┌┴┐
 b   A
の1試合

よって、0+1=1試合


・n=2の場合
(3),(4)について、
   ABc
 0:00
 1:01 A-Bより(右側が「勝つ」とした)
のような、1試合

(6)について、
  ┌┴┐
 ┌┴┐B  Bは1勝
 c   A  Aは0勝
の2試合

よって、1+2=3試合


・n=3の場合
(3),(4)について、
   ABCd
 0:000
 1:010 A-Bより(右側が「勝つ」とした)
 2:011 A-Cより
 3:002 B-Cより
 4:012 A-Bより
のような、4試合

(6)について、
   ┌┴┐
  ┌┴┐C  Cは2勝
 ┌┴┐B  Bは1勝
 d   A  Aは0勝
の3試合

よって、4+3=7試合


・n=4の場合
(3),(4)について、
    ABCDe
  0:0000
  1:0100
  2:0110
  3:0111
  4:0021
  5:0121
  6:0022
  7:0003
  8:0103
  9:0113
 10:0023
 11:0123
のような、11試合

(6)について、
    ┌┴┐
   ┌┴┐D  Dは3勝
  ┌┴┐C  Cは2勝
 ┌┴┐B  Bは1勝
 e   A  Aは0勝
の4試合

よって、11+4=15試合



!(3),(4)について
LET N=7 !n連勝
DIM P(N) !n人の看板
MAT P=ZER
LET C=0 !試合の回数
LET K=N !※右側yが「勝つ」として、Pの並びは0,1,2,3,…,(n-1)
DO
   FOR X=1 TO K-1 !xとyとの試合
      FOR Y=X+1 TO K
         IF P(Y)=P(X) THEN
            LET P(Y)=P(Y)+1 !試合の結果を反映させる
            LET P(X)=0

            LET C=C+1
            PRINT C !結果を表示する
            MAT PRINT P;
         END IF
      NEXT Y
   NEXT X

   IF P(K)=K-1 THEN
      PRINT K-1;"連勝をつくりました。"
      PRINT
      LET K=K-1
      IF K=1 THEN
         LET S=0 !Σ
         FOR i=1 TO N
            LET S=S +2^(i-1)-1
         NEXT i
         PRINT S

         PRINT 2^N-1 -N !必要な試合の回数

         STOP
      END IF
   END IF
LOOP
END


実行結果

1
0  1  0  0  0  0

2
0  1  1  0  0  0

3
0  1  1  1  0  0

4
0  1  1  1  1  0

5
0  1  1  1  1  1

6
0  0  2  1  1  1

7
0  0  2  0  2  1

8
0  1  2  0  2  1

9
0  1  2  1  2  1

10
0  0  2  2  2  1

11
0  0  0  3  2  1

12
0  1  0  3  2  1

13
0  1  1  3  2  1

14
0  0  2  3  2  1

15
0  0  0  3  3  1

16
0  0  0  0  4  1

17
0  1  0  0  4  1

18
0  1  1  0  4  1

19
0  1  1  1  4  1

20
0  0  2  1  4  1

21
0  0  2  0  4  2

22
0  1  2  0  4  2

23
0  1  2  1  4  2

24
0  0  2  2  4  2

25
0  0  0  3  4  2

26
0  1  0  3  4  2

27
0  1  1  3  4  2

28
0  0  2  3  4  2

29
0  0  0  3  4  3

30
0  0  0  0  4  4

31
0  0  0  0  0  5

5 連勝をつくりました。

32
0  1  0  0  0  5

33
0  1  1  0  0  5

34
0  1  1  1  0  5

35
0  1  1  1  1  5

36
0  0  2  1  1  5

37
0  0  2  0  2  5

38
0  1  2  0  2  5

39
0  1  2  1  2  5

40
0  0  2  2  2  5

41
0  0  0  3  2  5

42
0  1  0  3  2  5

43
0  1  1  3  2  5

44
0  0  2  3  2  5

45
0  0  0  3  3  5

46
0  0  0  0  4  5

4 連勝をつくりました。

47
0  1  0  0  4  5

48
0  1  1  0  4  5

49
0  1  1  1  4  5

50
0  0  2  1  4  5

51
0  1  2  1  4  5

52
0  0  2  2  4  5

53
0  0  0  3  4  5

3 連勝をつくりました。

54
0  1  0  3  4  5

55
0  1  1  3  4  5

56
0  0  2  3  4  5

2 連勝をつくりました。

57
0  1  2  3  4  5

1 連勝をつくりました。

57
57

 

Re: n連勝

 投稿者:山中和義  投稿日:2014年 5月 5日(月)12時38分19秒
  > No.3372[元記事へ]

>k人が 2^(k-1)-1 試合を行って、ひとりが (k-1)連勝となる。 残りは、0連勝となる。
> Σ[k=1,n]{ 2^(k-1)-1 } = 2^n-1-n 試合

試合回数について
次のシミュレーションは、看板の並びを考えると、n! 通りの結果を得ることはわかる。
すべてに対して、同じ回数ではあるが、数理は見えない。

先のプログラムのように、特別な試合結果なら、明解となる。


!(3),(4)について
RANDOMIZE
LET N=7 !n連勝
DIM P(N) !n人の看板
MAT P=ZER
LET C=0 !試合の回数
DO
   LET FLG=0 !試合の有無

   FOR X=1 TO N-1 !xとyとの試合
      FOR Y=X+1 TO N
         IF P(Y)=P(X) THEN !試合の結果を反映させる
            LET FLG=1

            IF RND<0.5 THEN !確率的勝負 50%
               LET P(Y)=P(Y)+1
               LET P(X)=0
            ELSE
               LET P(X)=P(X)+1
               LET P(Y)=0
            END IF

            LET C=C+1
            PRINT "No.";C; " ";X;"-";Y !結果を表示する
            MAT PRINT P;
         END IF
      NEXT Y
   NEXT X

   IF FLG=0 THEN EXIT DO !試合がなかった場合は終了する
LOOP
PRINT 2^N-1-N !必要な試合の回数
END


実行結果

No. 1   1 - 2
0  1  0  0  0  0

No. 2   1 - 3
1  1  0  0  0  0

No. 3   3 - 4
1  1  1  0  0  0

No. 4   4 - 5
1  1  1  1  0  0

No. 5   5 - 6
1  1  1  1  0  1

No. 6   1 - 2
0  2  1  1  0  1

No. 7   1 - 5
1  2  1  1  0  1

No. 8   1 - 6
2  2  1  1  0  0

No. 9   3 - 4
2  2  0  2  0  0

No. 10   3 - 5
2  2  0  2  1  0

No. 11   3 - 6
2  2  1  2  1  0

No. 12   1 - 2
3  0  1  2  1  0

No. 13   2 - 6
3  1  1  2  1  0

No. 14   3 - 5
3  1  0  2  2  0

No. 15   3 - 6
3  1  1  2  2  0

No. 16   4 - 5
3  1  1  3  0  0

No. 17   5 - 6
3  1  1  3  1  0

No. 18   1 - 4
0  1  1  4  1  0

No. 19   1 - 6
1  1  1  4  1  0

No. 20   2 - 3
1  0  2  4  1  0

No. 21   2 - 6
1  0  2  4  1  1

No. 22   5 - 6
1  0  2  4  2  0

No. 23   2 - 6
1  1  2  4  2  0

No. 24   3 - 5
1  1  0  4  3  0

No. 25   3 - 6
1  1  1  4  3  0

No. 26   1 - 2
2  0  1  4  3  0

No. 27   2 - 6
2  1  1  4  3  0

No. 28   2 - 3
2  0  2  4  3  0

No. 29   2 - 6
2  1  2  4  3  0

No. 30   1 - 3
0  1  3  4  3  0

No. 31   1 - 6
0  1  3  4  3  1

No. 32   2 - 6
0  2  3  4  3  0

No. 33   3 - 5
0  2  0  4  4  0

No. 34   3 - 6
0  2  0  4  4  1

No. 35   4 - 5
0  2  0  0  5  1

No. 36   1 - 3
0  2  1  0  5  1

No. 37   1 - 4
0  2  1  1  5  1

No. 38   3 - 4
0  2  2  0  5  1

No. 39   1 - 4
1  2  2  0  5  1

No. 40   1 - 6
2  2  2  0  5  0

No. 41   2 - 3
2  3  0  0  5  0

No. 42   3 - 4
2  3  1  0  5  0

No. 43   4 - 6
2  3  1  1  5  0

No. 44   3 - 4
2  3  0  2  5  0

No. 45   3 - 6
2  3  0  2  5  1

No. 46   1 - 4
0  3  0  3  5  1

No. 47   2 - 4
0  0  0  4  5  1

No. 48   1 - 2
0  1  0  4  5  1

No. 49   1 - 3
0  1  1  4  5  1

No. 50   2 - 3
0  2  0  4  5  1

No. 51   1 - 3
1  2  0  4  5  1

No. 52   1 - 6
2  2  0  4  5  0

No. 53   3 - 6
2  2  1  4  5  0

No. 54   1 - 2
3  0  1  4  5  0

No. 55   2 - 6
3  1  1  4  5  0

No. 56   2 - 3
3  2  0  4  5  0

No. 57   3 - 6
3  2  0  4  5  1

57

 

戻る