Che cos’è l’algoritmo / metodo Monte Carlo

Che cos’è l’algoritmo / metodo Monte Carlo
Moltissimi problemi reali sono difficilmente risolvibili in quanto particolarmente onerosi dal punto di vista computazionale: per quanto le tecniche di ottimizzazione siano utili e le euristiche consentano di risolverne diverse istanze, in molti casi si hanno difficoltà serie. 

Un algoritmo di randomizzazione classico, basato sull’approccio cosiddetto “Montecarlo”, cerca di generare un altissimo numero di istanze casuali per poi ricavare in forma chiusa una stima del valore richiesto. Per capire, si può pensare ad un lago racchiuso all’interno di un quadrato: conosciamo la misura dei lati, ma vogliamo avere una stima dell’area del lago.

Image Hosted by ImageShack.us

E’ sufficiente allora avere dei militari che sparino con un cannone un numero abbastanza alto di palle (uniformemente distribuito nell’area) e poi effettuare il rapporto tra i proiettili finiti in acqua e quelli rimasti a terra. Un’idea semplice che si basa esclusivamente sul concetto statistico di “popolosità” del campione in esame.

Riporto di seguito il codice Java (reperibile in rete) per calcolare il valore esatto di Pi greco: si tratta di una randomizzazione sulla stessa falsariga dell’esempio del cannone.


package it.test;

public class PiMonteCarlo {
public static void main(String[] args){
double x,//x-coordinate of the random point
y,//y-coordinate of the random point
Pi,//the calculated number pi
P;//probability of random points
int j=0,//number of points in the circle and square
i; //counter
int CONT=(int)(Math.pow(10, 8));
for (i=1; i<CONT; i++){
x=Math.random();//create random x
y=Math.random();//create random y
if (x*x+y*y<1) //the point is in cutting area
j++;
}
System.out.println("Random produced points "+j+" of "+i);
P=(double)j/(double)i; //calculate propability
Pi=P*4; //calculate Pi
System.out.println("Calculated Pi is: "+Pi);//print out Calculated Pi
System.out.println("Math.PI = "+Math.PI); //print out Pi
}
}

Ovviamente questo codice è soltanto uno spunto per ulteriori sviluppi. Nei prossimi post cercherò di affrontare questi concetti in modo più esteso, poichè molto interessanti ed utili in applicazioni pratiche. Nel frattempo se interessati potete consultare la pagina di Wikipedia sull’argomento.
Ti piace questo articolo?

0 voti

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.

Ti potrebbero interessare (News):

Cerca altro nel sito

Clicca sul box, e scegli la sezione per vederne i contenuti.