Aleatoriedad y belleza

Mucho algoritmos usan la aleatoriedad como estrategia, por ejemplo los algoritmos genéticos en las mutaciones o cuando entrenamos una red neuronal profunda por descenso de gradiente, por ejemplo cuando introducimos una única muestra aleatoria para cada iteración cuando pretendemos minimizar la función error.

En la computación cuántica, por ejemplo, aplicar la transformada de Hadamard sobre un qbit no deja de ser también una forma de generar aleatoriamente valores binarios ( la versión computacional del experimento del gato de Schrodinger…)

Sorprende cómo lo aparentemente aleatorio puede generar orden.Y no digo ya belleza.De eso trata este artículo, de cómo lo aleatorio puede generar bella geometría.

Un fenómeno aleatorio o estocástico  puede generar dinámicamente mediante iteración una estructura  a cualquier escala que contenga copias de sí misma, los llamados  fractales.

Un modo es el siguiente:

Consideremos el siguiente procedimiento geométrico: dibujemos los vértices A( 0,0)B(0,1) y C(0.5,raiz(3)/2) de un triángulo y escojamos al azar un punto cualquiera de su interior, P0;

Ahora, elijamos al azar uno de los tres vértices y determinemos a partir de él un nuevo punto P1, que se encontrará a medio camino entre P0 y supongamos A. Repitamos el proceso para P1, escogiendo de nuevo al azar un vértice del triángulo y dibujemos P2, el punto medio del segmento que une P1 y supongamos B. Lo aleatorio reside en seleccionar estos vértices al azar. Imaginaos un dado de tres caras, representando cada cara un vértice y lanzar los dados.¿ que es lo que obtendríamos?

Dado que hemos empezado con un punto arbitrario y hemos escogido aleatoriamente los vértices en cada iteración, tal vez estemos tentados a pensar que el resultado será una distribución aleatoria de puntos sobre el triángulo que, con el tiempo, acabará llenándolo. Pero esa respuesta es incorrecta.

Si disponéis de tiempo y ganas podéis hacerlo a mano o podemos generar un algoritmo sencillo en Python ,por ejemplo, que haga el trabajo por nosotros. Y usar la función random en vez de los dados. Esto es lo que me da con diferentes números de «tiradas».

El resultado es uno de los fractales más conocidos: ¡el triángulo de Sierpinski!