El teorema de los monos infinitos afirma que un mono pulsando teclas al azar sobre un teclado durante un periodo de tiempo infinito casi seguramente podrá escribir finalmente cualquier libro que se halle en la Biblioteca Nacional Francesa. En una nueva exposición del mismo teorema, más popular entre los angloparlantes, los monos podrían escribir las obras de William Shakespeare. En este contexto, el término casi seguramente es un término matemático con un sentido preciso y el “mono” no es en realidad un mono, sino que se trata de una metáfora de la creación de una secuencia aleatoria de letras ad infinitum.

La idea original fue planteada por Émile Borel, en 1913, en su libro Mécanique Statistique et Irréversibilité. Borel dijo que si un millón de monos mecanografiaran diez horas al día era extremadamente, extremadamente improbable que pudiesen producir algo que fuese igual a lo contenido en los libros de las bibliotecas más ricas del mundo y aun así, en comparación, sería aún más inverosímil que las leyes de la estadística fuesen violadas, siquiera someramente. Para Borel, el propósito de la metáfora de los monos era ilustrar la magnitud de un acontecimiento extraordinariamente improbable.

Después de 1970, la popular imagen de los monos se extendió hasta el infinito, convirtiéndose en que si un infinito número de monos mecanografiaran por un intervalo infinito de tiempo producirían texto legible. Insistir en ambos infinitos parece ser excesivo. Un solo mono inmortal que ejecutase infinitamente tecleos sobre una máquina de escribir podría casi con toda seguridad escribir cualquier texto dado y un número infinito de monos podrían producir todo texto posible inmediatamente, sin demora. De hecho, en ambos casos, el texto sería producido un infinito número de veces.

El teorema de los monos infinitos es directamente demostrable, incluso sin necesidad de resultados más avanzados. Si dos acontecimientos son estadísticamente independientes, queriendo decir esto que ninguno de ellos afecta al resultado del otro, entonces, la probabilidad de que ambos sucedan es igual al producto de las probabilidades individuales de que suceda cada uno. Por ejemplo, si las probabilidades de lluvia en Sydney en un día en particular es 0.3 y la probabilidad de que ese mismo día haya un terremoto en San Francisco es de un 0.8, entonces, la probabilidad de que ambos sucedan el mismo día es 0.3×0.8=0.24.

Ahora, suponiendo que un teclado tenga 50 teclas y la palabra a ser escrita es “banana”, mecanografiando al azar, la probabilidad de que la primera letra escrita sea b es 1/50, de que la segunda sea a es 1/50, etc. Dichos eventos son estadísticamente independientes, así que la probabilidad de que las seis primeras letras escritas sean “banana” es 1/50^6.

Ahora, las probabilidades de no escribir “banana” en cada bloque de 6 letras es 1-1/506. Dado que cada bloque debe ser considerado independientemente, la probabilidad X de no escribir “banana” en los n primeros de 6 letras es X=(1-1/50^6)^n. A medida que n aumenta, X se reduce. Para n=1.000.000, X=99.99%, pero para un n igual a 10 000 millones, X=53% y para una n=100 000 millones es un 0,17%. A medida que n se acerca a infinito, la probabilidad de X tiende a cero. Esto es, haciendo n lo suficientemente grande, X puede ser tan pequeño como uno quiera.

Si considerásemos las veces que se escribiría “banana” entre bloques de 6 letras, X tendería a 0 incluso más rápidamente. El mismo argumento se aplica si el mono estuviese escribiendo cualquier otra cadena de caracteres de cualquier tamaño.
Esta demostración muestra por qué infinitos monos podrían (con casi toda probabilidad) producir un texto tan rápidamente como pudiese ser escrito por un mecanografiador humano copiándolo desde el original. En este caso X=(1-1/50^6)^n, donde X representa la probabilidad de que ninguno de los primeros n monos escribiese banana a la primera. Cuando consideremos 100 000 millones de monos, la probabilidad cae al 0,17% y a medida que n aumenta, X (la probabilidad de que todos los monos fallen al escribir un texto dado) tiende a 0.

Pues bien, este problema fue atacado por Scott Hanselman en su blog (http://www.hanselman.com/blog), y llegó a la conclusión quelo que tenían que hacer es crear miles de generaciones de monos (hipotéticos) por segundo, en una simulación por computadora y entonces elegir cuáles podrían perpetuar la especie basándose solamente en su habilidad de escribir pasajes de Shakespeare.

Hanselman y su amigo Stepehn Toub, ambos trabajando en Microsoft, decidieron usar la biblioteca de funciones en paralelo .NET 4 Task Parallel Library, para hacer más fácil la generación de sus algoritmos, además, para poderlos escalar sin problemas en la medida que tienen más hardware a su disposición. Este proyecto “de juguete” es simplemente una demostración del procesamiento en paralelo ya disponible a las masas, de acuerdo a las propias palabras del bloguero.

La idea fue demostrar el procesamiento en paralelo en .NET y como se venía la conferencia “Keeping It Realtime“, decidieron que la presentación de sus ideas no sería de nuevo “una app en tiempo real para platicas en línea“o “he aquí un mapa que muestra los resultados en tiempo real“, decidieron usar SignalR, una biblioteca de señales asíncronas para ASP.NET, e incorporarla a su proyetco de los monos infinitos.

El autor en su blog muestra el código fuente (para quien esté interesado en cómo se puede hacer paralelismo en máquinas caseras con 4. 8 y 12 núcleos), y de los resultados obtenidos.

Enlaces Patrocinados
Comentarios