Girone all'italiana (Round-robin tournament)

posted Nov 22, 2011, 6:36 AM by r   [ updated Nov 22, 2011, 3:34 PM ]
[...] Nella terminologia sportiva, è comunemente detto girone all'italiana un raggruppamento di giocatori o squadre fatto in modo che ogni giocatore o squadra del gruppo possa incontrare tutte le altre.[...] da Wikipedia

[...] In a single round-robin schedule, each participant plays every other participant once. If each participant plays all others twice, this is frequently called a
double round-robin. [...] da Wikipedia

Nel file, scaricabile dal fondo della pagina, troverete le soluzioni al problema dello sviluppo di un calendario di gioco seguendo le regole dell'algoritmo di Berger (girone all'italiana). Sono presenti soluzioni che utilizzano rispettivamente una UDF, una formula che restituisce una matrice di risultati, una formula da trascinare e una formula che sviluppa solo gli indici relativi allo sviluppo del calendario di n squadre (n anche dispari).


La logica che può apparire complicata in realtà è molto semplice. Come spiega l'algoritmo di Berger sui due vettori (squadre che giocheranno in casa e squadre che giocheranno fuori casa) viene eseguito uno shift opposto. E' da notare che i vettori non considerano la prima posizione, usata nell'algoritmo come punto fermo.


Il risultato di qui sopra ottenuto per mezzo di un unica formula matriciale può essere riprodotto con semplici formule partendo da una uguale iniziale disposizione degli elementi.


Manca solo di sostituire la posizione 1 nella matrice dei primi giocatori. Useremo l'elevamento a potenza per una matrice costruita in modo da restituire i valori della prima colonna uguali appunto a 1 (n^0)


Per maggiori dettagli potete consultare le formule usate nel file. In tutte viene utilizzato un nome "rng" che restituisce il range contenente i nomi delle squadre.
ċ
r,
Nov 22, 2011, 8:56 AM
Comments