Posts etiquetados ‘Derrick Henry Lehmer’

dice-art-3

Tiramos un dado de seis caras. Automáticamente pensamos que es posible que la tirada dé como resultado cualquiera de sus seis caras, de modo que la probabilidad de sacar una de ellas es un sexto. ¿Por qué pensamos que, al tirar el dado pueden salir seis resultados distintos? ¿Por qué pensamos que pueden suceder diferentes cosas cuando siempre solo observamos una de ellas? ¿De dónde surge que podamos imaginar diferentes posibilidades cuando nosotros solo podemos observar hechos, y los hechos siempre solo son uno? En que en el pasado, cuando hemos tirado otros dados hemos visto que, en cada tirada, salían diferentes resultados. Si en el pasado, salían diferentes resultados, ¿por qué el futuro iba a ser diferente? ¿Por qué, sin venir a cuento, iba a salir, por ejemplo, al tirar el dado cien veces, siempre un tres? En este razonamiento inductivo hay un error: hemos simplificado pensando que las tiradas del pasado eran iguales a pesar de dar resultados diferentes. Sin embargo, no lo eran: mi mano lanzó el dado con una fuerza diferente, el dado estaba colocado de otra manera cuando lo cogí para lanzarlo, la superficie donde cayó era distinta… Corrijamos el error y razonemos: ¿Qué resultado habría salido si las circunstancias de lanzamiento hubieran sido exactamente iguales en la antigua tirada que en la nueva? El mismo, sin duda. Entonces, no puede ser la experiencia la pasada la que nos haga creer en el azar. Es, más bien, la experiencia futura la que nos hace pensar en la posibilidad de diferentes resultados, el simple hecho de que no podemos predecir el resultado ya que no podemos manejar todas las variables que intervienen en el lanzamiento.

Obsérvese que esta conclusión no nos puede llevar, de ninguna manera, a afirmar que la realidad, en sí misma, es aleatoria. Al afirmar que algo es aleatorio porque es impredecible estamos diciendo que yo, un sujeto, soy incapaz de predecir un suceso o, lo que es lo mismo, estamos afirmando que la aleatoriedad es una propiedad subjetiva, no objetiva.

Una genial forma de definir número aleatorio surge de la definición de complejidad de Kolmogorov. Un número aleatorio será aquel cuya longitud es exactamente la misma que el programa o algoritmo que lo genera. Por ejemplo, podemos tener un algoritmo muy simple que genere la sucesión de todos los número naturales: n+1 nos da como resultado 1,2,3,4,5,6… La longitud de tal algoritmo es muchísimo más corta que la cadena que genera (que, en este caso, es infinita), por lo que la sucesión de todos los números naturales no es un número aleatorio. Sin embargo, si nos encontramos la cadena “364479003258”, ¿cómo sabemos que no es aleatoria? Si encontramos el algoritmo que la genere y si, éste, es más corto que la misma cadena. Pero, ¿qué quiere decir que el algoritmo tiene la misma longitud que la cadena? Si no encontramos un algoritmo más corto que la genere, para crear dicha cadena tendríamos que crear uno que fuera, generando cada número uno tras otro, dando un paso en cada generación. Por ejemplo, para, generar el número anterior (en el caso que fuera aleatorio), deberíamos hacer un programa que dijera: “Escribe 3”, “Escribe 6”, “Escribe 4”, y así hasta escribir todos los demás. El algoritmo tendría el mismo número de instrucciones que números a generar. ¿Qué estamos queriendo decir con todo esto? Que aleatorio e impredecible son lo mismo, ya que impredecible quiere decir que, dada una sucesión de números, no sabemos cuál es el siguiente número que va a salir, es decir, que no conocemos que algoritmo genera la sucesión.

¿Cómo generan nuestros ordenadores números aleatorios? El método más común es el creado en 1951 por Derrick Henry Lehmer llamado Generador Congruencial Líneal. La fórmula es bastante sencilla:

latex

Los valores de X0 (lo que se llama la semilla, el inicio de la cadena), ac (dos constantes que elegimos al azar) pueden ser cualquier número que sea diferente de 0 y menor que m (qué será el número que determine el valor más alto de la serie de números aleatorios que pretendemos conseguir). Es curioso que estos  valores los ponemos a nuestros capricho al principio, es decir, los elegimos aleatoriamente. Flagrante círculo vicioso: para generar números aleatorios tenemos que tener primero dos de ellos (las constantes a y c). Nuestros ordenadores solucionan este problema cogiendo las constantes, por ejemplo, de su reloj interno, del ruido térmico de un digitalizador de audio o de las fluctuaciones de la velocidad de giro de los discos debido a las turbulencias del aire. Vamos a ver un ejemplo para ver cómo funciona el asunto. X0=1, a=1, c=2 y mod=5. Hacemos las operaciones:

X1=(1·1+2)·(5)=3

X2=(1·3+2)·(5)=0

X3=(1·0+2)·(5)=2

X4=(1·2+2)·(5)=4

X5=(1·4+2)·(5)=1

A partir de aquí, la cadena se repite (la cantidad de números aleatorios generados coincide con el módulo, pero no siempre es así). Para evitar esto nuestro ordenador cambia las constantes y genera números nuevos. ¿Por qué decimos que los números obtenidos según este método son aleatorios? Únicamente porque, si nos dan la sucesión de números resultante y no sabemos que se ha generado utilizando este algoritmo (o si no sabemos cuáles son las constantes a y c), es muy difícil saber cómo se han generado. Lo único que se busca cuando se genera un número al azar es que sea lo más difícil posible predecirlo.

Y obsérvese que, independientemente de que nuestro generador sea bueno o malo, lo que hace realmente nunca es crear números realmente aleatorios, siempre los crea pseudoaleatorios, es decir, que se comportan como si fueran aleatorios pero que, en realidad, son generados de forma tan determinista como el que genera la sucesión de todos los números naturales (n+1).

Parece que el quid de la cuestión está en la predicción. Pensemos que si tenemos un fenómeno cualquiera que nos resulta impredecible podemos pensar de dos maneras:

a) No podemos predecir el fenómeno porque aún no sabemos cómo predecirlo pero, en principio, nada impide que no encontremos la forma de hacerlo. En el fondo, el fenómeno está completamente determinado y su impredictibilidad se debe solamente a nuestra momentánea ignorancia. Incluso podría ser que tal ignorancia no fuera momentánea. Sería posible que jamás pudiésemos encontrar el método de predicción y, aún así, el fenómeno podría ser perfectamente determinista. Un chimpancé no puede predecir a qué temperatura hervirá el agua sin que eso deje de hacer que sea un suceso completamente determinado.

b) No podemos predecir el suceso porque el suceso mismo es ontológicamente indeterminado. La realidad es aleatoria y, por lo tanto, da igual todo lo que investiguemos porque jamás podremos predecirla.

¿Qué opción de las dos elegir? Aquí cabría encontrar una forma de saber si, dado ese mismo suceso, existe una forma de predecirlo o no (aunque no supiéramos cuál es esa forma en concreto). ¿Existe algún modo? Imaginemos que diseñamos un programa de ordenador superavanzado equipado con todas las técnicas pensables para, dado una sucesión numérica cualquiera, determinar si es predecible o no. Le introducimos la sucesión y lo ponemos en funcionamiento. Después de unos minutos nos da la solución: la cadena es predecible. Magnífico. Ahora le introducimos una segunda y volvemos a ponerlo en marcha. Pasa el tiempo y la máquina sigue trabajando incesantemente buscando la solución. Pasan minutos, horas, días, meses, años… ¿Hasta dónde llegará nuestra paciencia? ¿Cómo saber si es que la sucesión es impredecible o es que la máquina encontrará la solución en el próximo minuto, dentro de diez años o de veinte siglos? Por definición no hay forma de saberlo. Estamos hablando del célebre problema de la parada de Alan Turing.

Conclusión: es, por definición, imposible saber con certeza si la realidad está ontológicamente determinada o, por el contrario, es aleatoria. ¿Juega Dios a los dados? Los caminos del Señor son inescrutables.

randomness