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.

 

Accedi per commentare


Avatar di gs
gs ha risposto alla discussione #1204 23/01/2023 19:41
Per ogni osservazione in merito, mettere un commento in questa discussione.