Newsgroup: it.comp.programmare
Titolo: Calcolo combinatorio

Da una discussione da bar è nato questo quesito
che vorrei approfondire:
Ridotto a termini semplici avevo un amico che sosteneva
(è ancora un amico, ma non sostiene più) che se una squadra dopo tre
giornate a fatto 6 gol la prossima partita probabilemnte farà 2 gol.
anche se non è stato in grado di quantificare la probabilità.
Analizzando meglio il problema e utilizzando solo i dati iniziali
senza far intervenire altri fattori fuorvianti come valore della
squadra avversaria, arbitro cornuto, infortunei e sfiga secondo me
il problema va analizzato da un punto di vista simile a questo
si calcolano tutti i possibili risultati e si conta che probabilità a
avuto ogni risultato.
Nell'esempio in questione il problema è semplice.
In realtà i fatti potrebbero essersi svolti in una delle seguenti 28
maniere
     1  2  3 (giornate)
--------------------
1    0  0  6 
2    0  1  5
3    0  2  4 
4    0  3  3 
5    0  4  2 
6    0  5  1
7    0  6  0
--------------------
8    1  0  5
9    1  1  4 
10   1  2  3
11   1  3  2
12   1  4  1 
13   1  5  0
--------------------
14   2  0  4 
15   2  1  3
16   2  2  2
17   2  3  1
18   2  4  0 
--------------------
19   3  0  3
20   3  1  2
21   3  2  1
22   3  3  0
--------------------
23   4  0  2 
24   4  1  1 
25   4  2  0 
--------------------
26   5  0  1 
27   5  1  0 
--------------------
28   6  0  0
--------------------
28 *
3
-------
84
21 zeri      % 21/84*100 = 25.00
18 uno       % 18/84*100 = 21.43
15 due       % 15/84*100 = 17.86
12 tre       % 12/84*100 = 14.29
 9 quattro   %  9/84*100 = 10.71
 6 cinque    %  6/84*100 = 7.14
 3 sei       %  3/84*100 = 3.57
totale       % 84/84*100 = 100  
(il fatto che qui la differenza fra un risultato e l'altro sia 3 e
puramente casuale e dipende dalla selezione iniziale di 3 partite 6
punti)
Quindi il risultato più probabile è che faccia 0 gol ( 25% ) e non 2
(17.86%)
Ma volendo calcolare questo valore per numeri un poco più alti
cominciano le difficoltà.
supponiamo che alla 27 giornata una squadra abbia 60 punti, utilizzare
un algoritmo che produca tutti le possibili combinazioni e conti i
risultati all'interno di ogni combinazione potrebbe bloccare un pc per
mesi.
Ho trovato una soluzione che mi permette di semplificare le cose di
molto magari riducendo il tempo ad un solo giorno, purtoppo per
lavorare a bisogno di numeri con molte più cifre di quello che
consentono gli interi.
in alcuni punti compare qualcosa che mi sembra di ricordare è simile a
questo
 ( (x+0)*(x+1)*(x+2)....)  *  ( (y-0)*(y-1)*(y-2)....) 
________        tutti diviso         ___________
 ( (z+0)*(z+1)*(z+2)....)  *  ( (n-0)*(n-1)*(n-2)....) 
Il risultato finale è un numero ragionevolmente piccolo, ma i passaggi
intermedi possono richiedere numeri anche ad 80 cifre
Non sono un bravo matematico, ma mi sembra di capire che utilizzando
dei numeri che non anno 80 cifre ma vengono approssimati in una
potenza di 10 nello specifico caso del mio algoritmo non perdo solo la
precisione, ma perdo proprio il risultato falsandolo enormemente.
In realta il moltiplicatore ed il divisore contengono la maggior parte
di termini simili e quindi sarebbe semplificabilissimo ma è una cosa
che non sono in grado di fare all'interno del programma.
Se a qualcuno può interessare lo ricerco dentro la mia cartella
esperimenti e lo posto su NG.
Ad ogni modo mi serve o una libreria che gestisca numeri ad 80 cifre,
oppure uno che mi proponga un algoritmo o una equazione che non hanno
questo problema
OK anche se ci ho provato sono certo di non essere stato chiaro. Se a
qualcuno interessa l'argomente e se non mi dite che su questo NG sono
completamente OT sono disponibilissimo a chiarire.

 questo problema
Esistono librerie che gestiscono calcoli algrebrici con precisione
a piacere, prova a cercare su 
http://www.freshmeat.com/
 magari
salta fuori qualcosa.
-- 
Live free or die.  --  Debian/GNU/Linux die hard.

(17.86%)
Hmmm... non sono un esperto di probabilita', pero' son mi convince
tanto questo pronostico.
Cioe', non e' ragionevole aspettarsi che una squadra che possa aver
fatto gol per 73 giornate su 84 non segni ancora...
Nel tuo calcolo delle probabilita' fai riferimento solo alla quantita'
di risultati e non alla qualita' degli stessi.
Per es., si ripresenta per ben 3 volte, il caso di 6 gol in un giorno
solo e 0 gol negli altri due.
Sebbene questa situazione sia molto poco probabile, essa incide molto
nell'aumentare la probabilita' dello 0. Non e' pero' realistica.
Credo che il calcolo possa ridursi ad una semplice regressione
lineare, ma tre giornate sono troppo poche per avere un risultato
significativo. Cmq, per l'artimetica in precisione multipla, ci sono
diverse librerie in giro.
--
Andrea Laforgia
andrea_...@bigfoot.com