Il calcolo delle partite (uno contro uno o in coppia) dato il numero di partecipanti.

In pausa pranzo siamo soliti giocare a calcio balilla (biliardino). Abbiamo preso la questione talmente sul serio che abbiamo deciso di sviluppare un’applicazione web per gestire i tornei a coppie (due contro due). In particolare abbiamo adottato una formula molto interessante, che vede tutti i giocatori giocare in tutte le possibili combinazioni, gli uni contro gli altri, assicurando quindi un campionato in cui tutti avranno giocato lo stesso numero di partite in modo equo, con tutti i compagni possibili, e contro tutti gli avversari possibili.

Il punteggio (non interessante al fine del seguente articolo, ma che riporto per motivi di completezza) viene calcolato al meglio delle 11 palline giocate. Chi vince guadagna 10 punti per la vittoria + tanti punti quanti sono i goal realizzati. Una squadra che vincesse 8 a 3 ad esempio, totalizza 18 punti, mentre la squadra che perde ne totalizza 3.

Siamo giunti all’undicesimo torneo da quando abbiamo dato il via alle competizioni, iniziando nel 2008, quando abbiamo ricevuto il biliardino in omaggio dal nostro stimato Cliente Faress, a cui abbiamo sviluppato una piattaforma di e-commerce per la vendita online di articoli sportivi.

Il numero dei partecipanti varia spesso all’inizio di ogni torneo; a volte sviluppiamo un calendario da 5 partecipanti, a volte da 9-10 (non tutti amano partecipare, in particolar modo le nostre “ladies”).

Il quesito matematico legato a questo scenario è la domanda che spesso viene posta da uno dei partecipanti a inizio torneo: quante saranno le partite da giocare in base al numero dei partecipanti?

Stiamo per immergerci nel calcolo combinatorio, quella tipologia di calcolo che serve ad individuare le possibili combinazioni di eventi in relazione ai dati di partenza.

Questo tipo di calcolo ovviamente non si applica solo alle partite di calcio balilla, ma a qualsiasi gioco si vorrà organizzare che preveda squadre o accoppiate.

Rispondere alla domanda ci porta a risolvere un problema complesso, che possiamo affrontare partendo da una versione semplificata dello stesso, passando cioè a calcolare prima il numero di partite in un torneo in cui al tavolo non giocheranno due coppie, ma solamente due giocatori, uno contro l’altro.

Il calcolo di un torneo semplificato uno contro uno, senza gioco di coppie

Per semplificare il calcolo semplice, partiamo da un numero di partecipanti basso, ossia 4.

Giocheranno questo torneo:

  • Daniele
  • Fabio
  • Ilario
  • Ivano

Per conoscere il numero di partite uno contro uno, partendo da questi 4 giocatori, il calcolo potrà essere eseguito anche a mano, con carta e matita, nel seguente modo:

Si prende il primo giocatore della lista (Daniele) e lo si fa giocare contro gli altri 3. Avremo quindi le seguenti partite:

  • Daniele – Fabio
  • Daniele – Ilario
  • Daniele – Ivano

In questo modo avremo calcolato tutte le partite possibili da giocare di Daniele (3). Possiamo dire che Daniele gioca un numero di partite uguale a quello del totale dei partecipanti, meno uno (Partecipanti – 1). Passiamo quindi a calcolare le partite di biliardino che dovrà giocare il secondo giocatore, ossia Fabio (io).

Fabio ha già la sua partita generata contro Daniele, quindi gli rimarranno le seguenti partite da giocare:

  • Fabio – Ilario
  • Fabio – Ivano

Possiamo quindi dire che Fabio giocherà un numero di partite uguale al totale dei partecipanti meno due (Partecipanti – 2).
A questo punto calcoliamo le partite che dovrà giocare Ilario.

  • Ilario – Ivano

Ilario ha già un appuntamento fissato con Daniele, come visionato sopra, ma ha anche una partita generata con Fabio. A Ilario rimarrà una partita da giocare con Ivano (Partecipanti – 3).

A questo punto, rimangono da calcolare le partite di Ivano, ossia zero, poiché tutte le tre partite che deve giocare contro gli altri giocatori sono state già calendarizzate (Partecipanti – 4).

Abbiamo quindi:

4 partecipanti
3 partite organizzate su Daniele
2 partite organizzate su Fabio
1 partita organizzata su Ilario
0 partite organizzate su Ivano

Totale delle partite da giocare, uno contro uno = 6

Si può quindi dire che per calcolare quante partite si devono giocare partendo da N giocatori, sarà sufficiente sommare 1 + 2 + 3 + il numero successivo, fino a raggiungere N – 1. Nel caso dei 4 partecipanti sarà quindi 1+2+3 = 6.

Un torneo con 10 giocatori avrà quindi un totale di partite (sempre uno contro uno), di 1+2+3+4+5+6+7+8+9 = 45 partite.

Questo calcolo sembra facile in caso di numeri piccoli, ma come è possibile calcolare questa somma in modo veloce e semplice quando si gioca in 345 persone?

Eccovi un modo semplice e che mi è venuto in mente mentre ero in auto e che ho perfezionato al bagno guardando le piastrelle accanto alla vasca. Prima di avere l’aiuto delle mattonelle avevo pensato che impilando questi numeri da sommare uno sopra l’altro, avrei avuto qualcosa simile a una piramide (o meglio un triangolo):

X
XX
XXX
XXXX
XXXXX

E quale modo migliore di sommare i numeri, se non quello di utilizzare il calcolo dell’area del triangolo con base per altezza diviso due? Il problema è che in questo caso il sistema non funziona immediatamente, poiché l’area da sommare non corrisponde esattamente ad un triangolo, ma a un vero e proprio castelletto di LEGO:

Il calcolo combinato delle partite da giocare in relazione al numero dei giocatori

Come si vede qui sopra, la linea celeste delineerebbe esattamente il triangolo che potremmo doppiare moltiplicando la base (5) per altezza (5) e dividendo per due. In questo caso avremmo 12,5 partite da giocare. Tralasciamo il fatto che non è ovviamente possibile giocare mezza partita, la cosa più interessante è che per sommare correttamente 1 + 2 + 3 + 4+ 5 (stiamo ancora calcolando quante partite giocheranno 6 giocatori), è necessario raddoppiare l’area da dividere successivamente. Per raddoppiare la piramide costruita con i lego a sinistra, dovremo realizzare quanto vediamo a destra, costruendo così un rettangolo di 5 * (5 +1) e dividendo il risultato per due.

In questo caso avremo 5*(5+1), il tutto fratto 2 (per conoscere l’area del triangolo originale). Il risultato è quindi 5*6/2 = 15 partite da giocare.

Calcoliamo ora il numero di partite nel gioco a coppie.

Passiamo ora, acquisita questa prima procedura, a capire come calcolare lo scenario più complesso, ossia un torneo in cui le squadre non siano formate dal singolo giocatore che gioca contro l’altro giocatore, ma in cui si giochi coppia contro coppia.

Ragionando sul metodo di calcolo, viene in mente quanto segue:

Dati N giocatori, con il metodo sopra descritto sapremo quante accoppiate (squadre) saranno generate. La stessa procedura per definire gli incontri uno contro uno, la possiamo utilizzare in questa fase per generare tutte le possibili squadre.

La funzione ci darà quindi, partendo dal numero dei Partecipanti N, il numero di accoppiate possibili.

A questo punto sappiamo che 5 giocatori potranno generare 10 squadre. Dati i giocatori A, B, C, D, ed E, e si delineeranno quindi le seguenti squadre:

AB
AC
AD
AE
BA <- Già esiste (AB)
BC
BD
BE
CA <- Già esiste (BA)
CB <- Già esiste (BC)
CD
CE
DA <- Già esiste (AD)
DB <- Già esiste (BD)
DC <- Già esiste (CD)
DE
EA <- Già esiste (AE)
EB <- Già esiste (BE)
EC <- Già esiste (CE)
ED <- Già esiste (DE)

La lista così scremata sarà composta dalle 10 squadre:

AB
AC
AD
AE
BC
BD
BE
CD
CE
DE

Contro chi dovranno giocare queste 10 squadre? Ora viene il bello!

In teoria potremmo dire che tutte le squadre dovranno giocare contro tutte le altre accoppiate possibili. Le accoppiate oramai le conosciamo tutte, e sono riportate nella lista scremata qui sopra. Sarà quindi sufficiente prendere la prima squadra e decidere di farla giocare contro una qualsiasi delle altre squadre sotto di essa, stando attenti a non impegnare nuovamente i giocatori della stessa squadra in due squadre che giocheranno una partita. Per meglio capirci, AB non potrà giocare contro BC, poiché B avrebbe necessità del dono dell’ubiquità per stare da entrambi i lati del tavolo :)

Per sapere quante squadre si troveranno ad affrontare insieme A e B, si sviluppa nuovamente una lista di accoppiate dei giocatori C, D ed E, con lo stesso metodo usato in precedenza. Avremo quindi che 3 giocatori creeranno 3*(3-1)/2, ossia 3 squadre contendenti.

Possiamo così vedere la lista di tutte le partite che A e B dovranno affrontare insieme nello stesso lato del tavolo:

AB -> CD, CE, ED
AC
AD
AE
BC
BD
BE
CD
CE
DE

Procedendo con la stessa logica, la seconda squadra della lista, ossia AC, giocherà contro altre tre squadre coppie. Possiamo quindi affermare che, data la lista di tutte le squadre formate inizialmente unendo tutti i giocatori del torneo nelle possibili coppie, il totale delle partite da giocare, sarà dato dalla moltiplicazione delle squadre di partenza (che chiameremo “sfidanti”), per il numero di accoppiate (gli “sfidati”) che si possono generare escludendo ogni volta i 2 giocatori della squadra sfidante.

Dato quindi N = 5 (numero dei partecipanti), avremo:

Sfidanti: (n-1)*[(n-1)+1]/2
moltiplicato
Sfidati: [(n-1)-2]*{[(n-1)-2]+1}/2

4*5/2 = 10
moltiplicato
2*3/2 = 3

per un totale di 30 partite. Questo sistema tuttavia non è ancora corretto, poiché malgrado ci permetta di generare la lista completa delle partite, avremo il problema seguente :

AB -> CD, CE, ED
AC -> BD, BE, ED
AD -> BC, CE, EB
AE -> CD, DB, BD
BC -> AD, DE, AE
BD -> EA, EC, CA
BE -> CD, CA, AD
CD -> AE, EB, BA
CE -> DA, AB, BD
DE ->AC, CB, BA

Ciascun evento sarà generato doppio (cercate qualsiasi partita, ovviamente sarà generata due volte). Sarà quindi sufficiente dividere il risultato per due, per ottenere il numero di eventi netti da giocare.

Il calcolo definitivo sarà di seguito così composto:

Dato P numero dei partecipanti e N il numero di partite da giocare in un torneo di biliardino a coppie avremo che:

N = (p-1)*[(p-1)+1]/2 * [(p-1)-2]*{[(p-1)-2]+1}/2
————————————————————
2

semplifichiamo in:

N = (p-1)*p/2 * (p-3)*(p-2)/2
————————————-
2

semplifichiamo nella versione finale:

N = p*(p-1)*(p-2)*(p-3)/8

Applichiamo la formula a un centinaio di tornei composti da 1 a 100 giocatori per vedere il numero di partite da giocare (e capire che non ha senso organizzare tornei con più di 10 giocatori, se si vuole terminare di giocare entro l’età pensionabile):

2 Comments

  1. Andrea

    Buonasera, la formula é interessantissima, proprio quello che cercavo, sarebbe possibile generare un calendario secondo te in qualche modo? Mi riferisco alla formula a coppia… 8 giocatori che si accoppiano con tutti contro tutte le ipotetiche coppie

  2. Ciao Fabio,
    Yuri dalla nuova Zelanda.
    Abbiamo appena comparator 2 calcetti per il nostro Club Italia qui a Nelson NZ.
    Ho letto che hai sviluppato un applicazione Web per organizzare i torn di calcetto a 4 con numero di partecipanti variable. Prorpio quello che serve a noi!
    Potresti essere cost gentile da condividerla con noi? In cambio se passi da queste parti avrai una cena sociale gratis per te e la tua famiglia.
    Ciao
    Yuri e altri soci

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Current month ye@r day *