[Teoria] Simulazione sorteggio Champions League
Allora il nuovo formato della Champions League prevede le seguenti regole:
Le 36 squadre vengono suddivise in 4 fasce in base al ranking. Ogni squadra poi vorrà sorteggiata a giocare contro 8 squadre diverse, 2 per ogni fascia. Una in casa e una in trasferta per ogni fascia. Ci sono due regole: la prima è che non possono sfidarsi squadre della stessa nazionalità (a meno che non sia impossibile evitarlo, ad esempio troppe squadre italiane nella stessa fascia), e ogni squadra non può sfidare più di due avversarie della stessa nazionalità. La procedura del sorteggio è il seguente:
Si parte dalla prima fascia, e si sorteggia manualmente ogni squadra, dopo che una squadra è stata sorteggiata un computer calcola le 8 avversarie contro cui giocherà (il programma non so bene come funziona).
Io vorrei scrivere un programma che date due squadre mi permette di stimare la probabilità che queste due squadre si sfidano. Ho pensato in modo piuttosto naif di calcolarmi tutte le combinazioni (anche quelle illegali rispetto alle regole) e poi eliminare quelle che non soddisfano le regole. Ma credo che sia troppo dispendioso a livello di tempo. Quello che ho fatto è considerare una matrice \(36 \times 36 \), dove le righe e le colonne sono le squadre ordinate in base al ranking, e la suddivido in \(16 \) blocchi di matrici di \(9 \times 9 \). Dalle regole abbiamo che in ogni blocco devo mettere uno ed un solo 1 su ogni riga e colonna (1 rappresenta squadre che si sfidano e 0 no). Ma così devo calcolarmi \( (9!)^{16} \approx 10^{88} \) (anche migliornado e facendo \((8!)^{4} \times (9!)^{12} \) non migliora di molto) matrici \(36 \times 36 \) e poi controllare singolarmente ciascuna di queste matrici per vedere se soddisfa le regole. Quindi anche se controllando una matrice ci metto 1 millisecondo beh... ciaone aspetto più del età del universo ora che mi calcola le frequenze. Magari farlo in modo dinamico? Non saprei qualcuno ha delle idee?
Ps: una volta che ho un simulatore di sorteggio posso applicare Monte Carlo e stimare la probabilità.
Le 36 squadre vengono suddivise in 4 fasce in base al ranking. Ogni squadra poi vorrà sorteggiata a giocare contro 8 squadre diverse, 2 per ogni fascia. Una in casa e una in trasferta per ogni fascia. Ci sono due regole: la prima è che non possono sfidarsi squadre della stessa nazionalità (a meno che non sia impossibile evitarlo, ad esempio troppe squadre italiane nella stessa fascia), e ogni squadra non può sfidare più di due avversarie della stessa nazionalità. La procedura del sorteggio è il seguente:
Si parte dalla prima fascia, e si sorteggia manualmente ogni squadra, dopo che una squadra è stata sorteggiata un computer calcola le 8 avversarie contro cui giocherà (il programma non so bene come funziona).
Io vorrei scrivere un programma che date due squadre mi permette di stimare la probabilità che queste due squadre si sfidano. Ho pensato in modo piuttosto naif di calcolarmi tutte le combinazioni (anche quelle illegali rispetto alle regole) e poi eliminare quelle che non soddisfano le regole. Ma credo che sia troppo dispendioso a livello di tempo. Quello che ho fatto è considerare una matrice \(36 \times 36 \), dove le righe e le colonne sono le squadre ordinate in base al ranking, e la suddivido in \(16 \) blocchi di matrici di \(9 \times 9 \). Dalle regole abbiamo che in ogni blocco devo mettere uno ed un solo 1 su ogni riga e colonna (1 rappresenta squadre che si sfidano e 0 no). Ma così devo calcolarmi \( (9!)^{16} \approx 10^{88} \) (anche migliornado e facendo \((8!)^{4} \times (9!)^{12} \) non migliora di molto) matrici \(36 \times 36 \) e poi controllare singolarmente ciascuna di queste matrici per vedere se soddisfa le regole. Quindi anche se controllando una matrice ci metto 1 millisecondo beh... ciaone aspetto più del età del universo ora che mi calcola le frequenze. Magari farlo in modo dinamico? Non saprei qualcuno ha delle idee?
Ps: una volta che ho un simulatore di sorteggio posso applicare Monte Carlo e stimare la probabilità.
Risposte
"3m0o":
Si parte dalla prima fascia, e si sorteggia manualmente ogni squadra, dopo che una squadra è stata sorteggiata un computer calcola le 8 avversarie contro cui giocherà (il programma non so bene come funziona).
Ma con questo metodo non potrebbe accadere ad un certo punto di non poter più rispettare la seguente regola:
"3m0o":
ogni squadra non può sfidare più di due avversarie della stessa nazionalità
?
"3m0o":
Ps: una volta che ho un simulatore di sorteggio posso applicare Monte Carlo e stimare la probabilità.
In effetti i sorteggi si sono tenuti proprio a Montecarlo... è un caso? Io non credo!

"utente__medio":
[quote="3m0o"]Si parte dalla prima fascia, e si sorteggia manualmente ogni squadra, dopo che una squadra è stata sorteggiata un computer calcola le 8 avversarie contro cui giocherà (il programma non so bene come funziona).
Ma con questo metodo non potrebbe accadere ad un certo punto di non poter più rispettare la seguente regola:
"3m0o":
ogni squadra non può sfidare più di due avversarie della stessa nazionalità
?
[/quote]
Allora non so come funzioni il loro software. Ma penso ci siano modi per evitarlo, a me viene in mente che data un assegnazione, puoi controllare se i futuri sorteggi possiederanno inevitabilmente un conflitto con le regole e in tal caso l'assegnazione non viene confermata e se ne cerca un'altra.
"utente__medio":
[quote="3m0o"]Ps: una volta che ho un simulatore di sorteggio posso applicare Monte Carlo e stimare la probabilità.
In effetti i sorteggi si sono tenuti proprio a Montecarlo... è un caso? Io non credo!


"3m0o":
Ma penso ci siano modi per evitarlo, a me viene in mente che data un assegnazione, puoi controllare se i futuri sorteggi possiederanno inevitabilmente un conflitto con le regole e in tal caso l'assegnazione non viene confermata e se ne cerca un'altra.
Non so quanto sia fattibile una cosa del genere, ma in tal caso presumo che il numero di sorteggi da cui attingere sia minore di quelli possibili, nel senso che determinati accoppiamenti potrebbero essere esclusi a priori.