Molto semplice.
Il teorema della scimmia instancabile afferma che una scimmia che preme a caso i tasti di una tastiera per un tempo infinitamente lungo,quasi certamente riuscira' a comporre qualsiasi testo prefissato.
Si puo' dire che questo teorema e' un caso particolare del secondo
lemma di Borel-Cantelli.
Questa formulazione del teorema e' stata data da
Émile Borel.
Ovviamente la scimmia o le scimmie che battono a macchina rappresentato solamente un meccanismo per poter produrre a una successione infinita di caratteri casuali.
Dato pero' che gli animalisti non sarebbero stati felici di scimmie che costrette a battere a macchina,onde evitare rivoluzioni da parte degli animalisti o da parte delle scimmie(si sa' che la cultura apre la mente),l’americano Jesse Anderson ha deciso di dimostrare questo teorema,non utilizzando vere scimmie,ma ideando un programma in cui milioni di scimmie virtuali "battono costantemente a macchina".
Per fortuna di Anderso nessun nerd e' sceso in piazza per protestare contro lo sfruttamento di tutti quei bit.
Risultati?
L'esperimento è stato sin qui prolifico, anche se Anderson non ha rispettato alla lettera le condizioni del teorema.
Per questo esperimento le scimmie che digitano caratteri a caso sono
elementi computanti virtuali fatti girare prevalentemente sui server
dell'infrastruttura cloud di Amazon, e si contano nell'ordine di qualche
milione.
Fin qui e' in regola con il teorema,anche se in realta' un qualunque algoritmo non generera' mai caratteri realmente casuali.
- Pc-facile.com ha scritto:
- Letteralmente: Casuale, senza un ordine predefinito.Al contrario di quanto possa sembrare ai meno esperti, all'interno di un computer nulla avviene mai "a caso" né "per caso", soprattutto per quanto riguarda la generazione di valori numerici.
Se questo è un bene, perchè il funzionamento dei programmi
si può sempre ricondurre a ben determinate combinazioni di valori e di
stati logici, per contro, in alcune situazioni, la "mancanza di
casualità" può rappresentare un limite.
Si pensi, ad esempio, ai programmi utilizzati nelle simulazioni basate sul calcolo delle probabilità, oppure al campo
ludico: anche il videogame più sofisticato perde ogni attrattiva quando
si scopre e si riesce a prevedere lo schema secondo il quale si muove
l'avversario-computer!
La funzione Random, disponibile in molti linguaggi di programmazione,
permette in realtà di generare successioni di numeri "pseudo-casuali",
ovvero di numeri apparentemente casuali ma che si ripetono nel medesimo
ordine ogni volta che la funzione viene re-inizializzata.
Dato un valore iniziale("seme") ricevuto in input,l'argoritmo generatore lo applica a formule matematiche, restituisce il risultato dei calcoli alla routine richiedente e ne memorizza una copia come valore da utilizzare la prossima volta.
Questo procedimento, apparentemente stupido (ad un determinato seme
corrisponde sempre la medesima sequenza di numeri pseudo-casuali),
permette in realtà di eseguire test ripetibili nel tempo, in alcuni casi
velocizzando alquanto lo studio di modelli complessi.
Come si diceva poc'anzi,
la disponibilità di numeri che invece non si ripetano mai nel tempo è
però fondamentale in molti programmi: per generare numeri "veramente
casuali" i programmatori ricorrono quindi a particolari accorgimenti che
permettono di cambiare il seme del Generatore Random con una
sufficiente imprevedibilità.
Questi metodi prevedono di solito l'utilizzo del valore memorizzato nell'orologio di sistema del computer al momento della chiamata alla funzione Random.
Esso conteggia i millisecondi trascorsi a partire dalla data di riferimento lungo l'intervallo di un secolo: nemmeno in questo caso i
valori generati sono "veramente casuali", però sono "abbastanza poco
pseudo-casuali" da servire allo scopo!
Il tempo a loro disposizione è infinito, ma piuttosto che aspettare
l'output casuale di caratteri,come detterebbe il teorema della scimmia
instancabile,il software è stato programmato per confrontare una
stringa di nove caratteri generata casualmente con il testo del componimento
A Lovers Complaint: se la stringa è contenuta nel testo viene annotata e si passa a quella successiva finché l'opera non è completa.
Anderson ha scritto sul suo blog: “Questo è il più grande lavoro
prodotto casualmente mai realizzato. E’ solo un piccolo passo per una
scimmia, ma un grande passo per qualunque primate virtuale”. Il
programmatore ha inoltre spiegato che “il progetto è stato il mio modo
creativo di trovare una risposta al teorema non disponendo di risorse
infinite”.
Le scimmie virtuali hanno già battuto 5 trilioni dei ben 5,5 trilioni di possibili sequenze di 9 caratteri ottenibili con l’alfabeto inglese.
Se qualcuno si stesse chiedendo qualcosa tipo "ma davvero l'umanita' non ha provato a farlo con delle scimmie vere?"
La risposta e',si,ci abbiamo provato.
non e' infatti la prima volta che si tenta di verificare il problema.
Nel 2003 l’Art Coucil d’Inghilterra aveva stanziato 2 mila sterline per
realizzare un esperimento con sei macachi del Suwalesi, ma il progetto
venne abbandonato dopo un mese e appena 5 pagine prodotte, composte
soprattutto da stringhe con la sola lettera S, molto lontane dal
somigliare ad una parola di inglese. Senza tener conto dei computer
danneggiati e delle tastiere scambiate dai macachi per toilette.