2012-05-04 2 views
3

괄호는 mod 4를 기반으로 한 Double Elimination 토너먼트를 코딩하려고합니다. 첫 라운드는 모든 바이크를 처리해야하므로 라운드 2 후에는 더 이상 바이 이스가 없습니다. . 내가 필요로하는 바이스의 양을 결정하는 실제적인 수학을 이해하려고 애 쓰고있다. 만약 누군가가 뒤에 수학을 도울 수 있다면 크게 감사하겠습니다.bye를위한 더블 제거 토너먼트 알고리즘 %

mod 4 (0,1,2,3)에 대해 가능한 답변은 1,2,3 개를 처리해야합니다.

I의 의미의 예 그래서 라운드 1 브래킷 1vs2 2vs3 3vs4 4vs5 5vs6

라운드 2 같아야 (13 % 4 = 1) 13 플레이어 그래서 이다 7vs 수상자 8vs 수상자 9vs 수상자 우승자 다음 우승자 대 당신은 웹 사이트 도전에 익숙한 경우 기본적으로, 나는 t을 원하는 패자 브래킷을

이 그 (것)들과 유사한 나의 괄호를 생성한다, 그러나 나는 그들의 결정의 뒤에 수학을 계산할 수 없다.

누구나 이와 비슷한 일을했다면 나는 그의 도움에 크게 감사 할 것입니다. N 경쟁 업체의 수는

+0

대회 득실 대결 참가자의 수는 4의 배수가 아닌 2의 배수이므로 잘못 추적했다고 생각합니다. – lsuarez

+1

네, 내 그룹 리더는 모드 4라고 말한 사람입니다. 왜 내가 그 말을 들었는지 안다. – user1044658

+0

'2 라운드가 끝나면 더 이상 바이즈가 없어 질 것입니다. 토너먼트에서 언제든지 홀수의 선수가 있다면 당신은 bye을 원할 것입니다. – ElKamina

답변

2

은 라운드의 수는있을 것입니다 :

nRounds = Math.Ceiling(Math.Log(N, 2)); 

첫 라운드의 슬롯의 수는있을 것입니다 :

최고 경쟁자가 부전승을 얻을
firstRoundSlots = Math.Pow(2, nRounds); 

, 따라서 귀하의 예에서는 16 라운드에서 13 명의 경쟁자가 있으므로 상위 3 명의 경쟁자가 작별 인사를합니다. 다시 말하면, 부수는 firstRoundSlots - N입니다.

복싱의 순서는 조금 더 복잡합니다. 기본적으로 아이디어는 결승전이 최고의 경쟁자 대 2 위 경쟁자라는 것입니다. 준결승에서 가장 좋은 경쟁자는 세 번째로 우수한 경쟁자와 경쟁하며, 두 번째로 우수한 경쟁자는 네 번째로 우수한 경쟁자와 경쟁합니다. 등등. 따라서 주문을 생성하기 위해 결승에서 거꾸로 일하는 것이 가장 쉽습니다. 당신이 역에서 한판 승부 주문을 생성하는 알고리즘을 알고 싶다면

그러나, (즉, 1 라운드에서 시작하여 마지막으로 당신의 방법을 작동), 나는 여기에 대한 블로그 포스트를 작성했습니다 :

http://blogs.popart.com/2012/02/things-only-mathematicians-can-get-excited-about/

0

내가 어떻게 해결했는지 알려 드리겠습니다.
당신은 2

의 힘 2 라운드에서 플레이어의 숫자를 원하는 2 라운드에서 플레이어의 수는 다음과 같습니다 (matches in round 1)/2 + byes)
하자 P는 플레이어의 숫자.

2^n = (P-byes)/2 + byes 
2^(n+1) = P-byes + 2*byes 
2^(u) = P + byes 

그래서 가장 작은 u s.t.를 찾으십시오. 2^u >= P이면, 2^u-P byes가 있습니다.

예시의 경우 : 7 -> 2^U = 8 -> (8-7) -> 1 바이
1 바이 3 개 일치 - 이는 4 개조하지 라운드 2

에서> 4 명 선수 9 명을 13 명으로 비교하십시오 : 9 -> 2^u = 16 -> (16-9) -> 7 byes 13 -> 2^u = 16 -> (16-13) -> 3 byes

좀 더 흥미로운 질문은 최소한의 수를 정하는 방법 일 것이고, 첫 번째보다는 다른 라운드에서 일부를 허용 할 것입니다. 내가 생각할 수있는

0

간단한 알고리즘 : 플레이어는 플레이어의

  • 순위 (중 실제 정보 또는 어떤 임의의 것을 사용)

    1. 씨는 현재 지점에 따라, 그 후 동점 인 경우 그들은 최소 순위 플레이어는 일반적으로 인사를 얻을 수
    2. 연주하지 않은 다음으로 높은 순위 플레이어 각 플레이어를 쌍으로 순위가 상위 순위 플레이어에서 최소로 시작되는 대회의 모든 단계에서 씨앗
    3. ,536 한 사람이 두 경기 (또는 무승부가 유행 경우이 손실 당량)의 총을 상실 할 때마다
    4. 은, 그 사람은 토너먼트 대회에 남아있는 싱글 플레이어가이 때까지
    5. 반복 벗어