Esiste un algoritmo noto per la pianificazione delle partite dei tornei?


10

Mi chiedo solo se esiste già un algoritmo di programmazione dei tornei che potrei usare o persino adattare leggermente.

Ecco i miei requisiti:

  • Un numero variabile di avversari appartenenti a un numero variabile di squadre / squadre deve essere accoppiato a un avversario
  • Due avversari non possono appartenere alla stessa squadra
  • Se c'è un numero dispari di giocatori, 1 di questi viene scelto casualmente per ottenere un arrivederci

Tutti gli algoritmi relativi a questo tipo di set di requisiti sarebbero apprezzati.

EDIT: Devo solo eseguire questo per un massimo di una volta, creando matchup per il primo 'round' del torneo.


Potresti voler esaminare la corrispondenza massima .
svick,

Risposte:



1

Dal mio breve periodo su Wikipedia, venti secondi fa, sembra che prima dovrai decidere una strategia di eliminazione. Vedi Wikipedia:

  1. Swiss-System
  2. Single-elimination_tournament
  3. Fare doppio elimination_tournament

L'articolo a eliminazione singola descriveva le tecniche di seeding (l'algoritmo che stai cercando) in modo piuttosto generico e sembrava utile, anche se non proprio un algoritmo.


Preferisco lo svizzero, che offre classifiche medie a differenza della doppia / singola eliminazione, e trova i migliori N giocatori nello stesso numero di round di un torneo N-elimination.
Mooing Duck,

1

Crearlo mentre vado, sembra che un algoritmo di abbinamento iniziale sia abbastanza semplice:

While two or more clubs have at least one member not paired  
    select the two clubs with the most unpaired members
    select a random unpaired member from each club
    pair those members

Se rimane una persona, sarà una persona a caso, con una sola eccezione. Se un club ha più membri di tutti i giocatori avversari messi insieme, gli avanzi verranno sempre da quel club. Realisticamente, questa è una situazione molto rara, e scegliere un acquisto da qualsiasi altro club lascerebbe ancora più persone rimanenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.