Sotto opportune assunzioni vogliamo determinare la probabilità di vittoria in torneo da parte di uno specifico giocatore.
ASSUNZIONI
1. i giocatori hanno una forza di gioco espressa dal loro punteggio Elo
2. il torneo è ad eliminazione diretta in forma standard di tabellone con numero di giocatori pari a N dove esso è una potenza del 2
3. NT è il numero di turni
Per semplicità faremo riferimento al seguente tabellone tipo: N = 8, NT = 3
Il problema quindi è il seguente: quale è la probabilità di vittoria del singolo giocatore A..H dato il suo punteggio Elo ?
A titolo di esempio
1600 A
1660 B
1500 C
1500 D
1700 E
1720 F
1500 G
1400 H
E' importante ricordare che il sistema Elo consente di determinare la probabilià dell'esito dell'incontro di una coppia di giocatori X - Y.
Cioè il valore ELO(X) - ELO(Y) permette di calcolare probabilità che X vinca l'incontro.
Per ragguagli vedere qui wiki-elo dove si parla di punteggio atteso Ea e Eb.
Il metodo di calcolo che illustro qui, realizzabile per mezzo di un programma di generazione automatica fornito di seguito, è composto di 'passate' successive.
In sostanza viene realizzato uno schema ricorsivo che sfrutta la conoscenza dell'esito di 2 tornei di T-1 turni per calcolare l'esito di un torneo di T turni.
Metodologia dal basso verso l'alto (bottom - up).
Si procede così.
STEP 0
Calcolo le probabilità di vittoria di tutti gli incontri del primo turno:
prob-win(A,B),
prob-win(B-A),
...
prob-win(G-H),
prob-win(H-G)
E' come se avessi risolto il problema per i casi di grandezza T = 0.
Per i casi successivi, T > 0, procedo in questo modo:
STEP T (T > 0)
Sapendo di aver calcolato le probabilità di vittoria in un torneo di livello T-1 da parte di tutti i giocatori A..H posso determinare in modo abbastanza semplice la probabilità che ha lo stesso giocatore di vincere quello di livello T.
Un torneo di livello T è costruito a partire da due tornei di livello T-1.
Vedere figura sopra.
Cioè se indico con A-B un torneo, banale, di livello 0 e C-D un altro torneo di livello 0, essi formano un torneo di livello T = 1 composto dai giocatori A,B,C e D.
Successivamente, risolti tutti i tornei di livello 1, ABCD e EFGH andranno a comporre il torneo di livello T=2 risolvendo il quesito finale.
Utilizziamo questa notazione:
prob[i][T] = probabilità che ha il giocatore i di vincere il suo sub-torneo relativo di livello T (sappiamo che il passo base T = 0 è determinato in modo elementare come detto allo STEP 0).
pElo(i,j) = probabilità che ha il giocatore i di battere il giocatore j (noto per il fatto che usiamo il punteggio Elo)
NT = numero massimo di turni (esempio NT = 3)
T = turno corrente, sia step iniziale T = 0
N = numero giocatori (esempio N = 8)
i vari step sono T = 0,...,NT-1 (in tutto sono NT)
( frammento di programma in codice C-style )
z = 2;
for (T=1; T<NT; ++T) {
z *= 2;
for (ply=0; ply<N; ply += z) {
for (j=0; j<z/2; ++j) {
s = 0.0;
for (k=z/2; k<z; ++k) {
s += pElo(ply+j,ply+k) * prob[ply+k][T-1];
}
prob[ply+j][T] = prob[ply+j][T-1] * s;
}
for (j=z/2; j<z; ++j) {
s = 0.0;
for (k=0; k<z/2; ++k) {
s += pElo(ply+j,ply+k) * prob[ply+k][T-1];
}
prob[ply+j][T] = prob[ply+j][T-1] * s;
}
}
}
il risultato si trova in prob[ply][NT-1] con ply = 0..N-1
Con la notazione dell'esempio
ply = 0 ==> giocatore A
...
ply = 7 ==> giocatore H
Un programma adatto per sistemi windows a 64 bit può essere scaricato al link seguente:
MENU --> File da scaricare -> area_condivisa_con_tutti_gli_utenti -> STRUMENTI -> 99_main_probabilita_in_tabellone_torneo.zip
Mettere tutto in una cartella e fare doppio click sul run.bat
Richiede in input un file nella forma indicata in torneo_articolo.txt in allegato.
Osservare che il numero dei giocatori è una potenza del 2 e non vi sono spazi tra nomi e cognomi.
Il risultato viene fornito nel file RESULTS.txt
Ogni nota o osservazione, di qualunque tipo, deve essere posta con un commento all'articolo.
Anche gli aggiornamenti del programma vengono notificati con la stessa modalità.
Per il download è necessario un account su questo sito.
Il file generato sysp99.txt serve solo come diagnostica e può essere ignorato.