Me acuerdo que en una práctica de programación 3, pedían hacer un juego de billar en java (en un applet, sí aquello super "cool" que ya nadie recuerda)
Tenía que ser un programa concurrente
La especificación de la práctica decía que cada bola tenía que correr en su propio "proceso" (o hebra o como quieras llamarlo)
Yo decidí no hacerlo así, porque para una práctica está bien, pero para simular un billar... tendríamos efectos cuánticos
Imaginemos una bola corriendo independiente de las demás. Da un pasito (por ejemplo del tamaño de un punto en la pantalla) y verifica si ha tocado a otra bola, el borde o el agujero para interactuar con su entorno)
Para verificar si toca otra bola, pregunta al resto de bolas sus posiciones y hace los cálculos
Pero el resto de bolas se mueve independientemente y por tanto, se mueven mientras esta hace los cálculos.
Eso podría generar que al iniciar los cálculos, las bolas están "tocándose" pero mientras hace los cálculos, la otra bola sigue su camino y se solapan
Más o menos, el problema sería que la bola no sabe exactamente dónde están las demás por un problema de sincronización (o quizá es mejor decir de desincronización) derivado de cada cada una se mueve de forma completamente independiente
¿de qué dependería este efecto?
Del tamaño relativo de la bola respecto a la distancia de cada paso. Hay... en un ordenador es imposible trabajar con continuos. Pero... ¿se puede en el mundo real?
¿Qué marca la velocidad de una bola? o bien el tamaño de paso (tamaño de pasos por unidad de tiempo) o la cantidad de tiempo que permanece en la misma posición antes de dar un paso, o ambas
Una bola sabría en un momento dado su velocidad y posición con total precisión.
Por supuesto, serían parámetros propios y le podemos preguntar
Pero eso es porque funciona en una mesa rígida. Si a esa mesa le metemos relatividad especial... la cosa se complica pero sigue sin ser imposible (incluso si quitamos los bordes y ponemos los agujeros en movimiento)
Pero intentemos saber la velocidad y posición de una bola sin preguntarle al programa que dirige todo (¿en el mundo real hay algo así?)
¿Cómo podríamos saber su velocidad y posición?
Ahora tenemos una mesa de billar con la luz apagada, no vemos nada de lo que tiene
Metemos en la mesa de billar un actor nuevo.
Unas diminutas bolitas, muy, muy pequeñas y ligeras, de forma que al chocar con las bolas de billar, estas últimas no se vean alteradas (o casi)
Supongamos que todas las bolas de billar están paradas...
Lanzamos estas microbolitas en la mesa, lanzamos un haz dirigido de esas bolitas y con unos detectores, analizamos cuándo y dónde vuelven (las que vuelvan)
Con esto podríamos hacer un mapa parcial y detectar las bolas de billar.
Estamos ignorando los efectos relativistas, complicarían mucho las cosas.
Pero si las bolas de billar se mueven, ya tenemos la fiesta montada
Las bolitas lanzadas, se mueven cada una independientemente, son procesos independientes y cada bola de billar igual
Nuevamente, cuando una bolita trate de calcular su nueva dirección por una interacción con una bola mucho más grande de billar, la bola de billar podría seguir a su aire fagocitando parcial o totalmente la bolita.
Eso haría que en el cálculo de la nueva dirección de la bolita... ¿que le pasaría?
Supongamos que el rebote se calcula respecto al centro de la bola grande. El rebote por tanto, debido a este solapamiento, sería impredecible
Si tratamos de hacer un mapa con este sistema y en esas condiciones, tendríamos un mapa con bolas más gordas de lo que son y con los bordes difuminados (vamos, un mapa borroso)
¿Cómo reducir este efecto?
En un programa de ordenador es fácil, eliminando la concurrencia. Por ejemplo... después de cada paso, todo el mundo quieto hasta que se calculen todas las interacciones entre todas las partículas
En el mundo real...
teniendo bolas de billar enormes, el efecto de difuminado sería imperceptible
El efecto de difuminado parece casar muy bien con el principio de incertidumbre de heisemberg y además, el solapamiento sería el famoso efecto túnel
Es decir, que simular un mundo cuántico en un ordenador parece curiosamente sencillo
Y lo sorprendente es que es muy sencillo utilizando un modelo que no se basa en los principios básicos de la mecánica cuántica, sino en una consecuencia
Una de las consecuencias de la mecánica cuántica es la no predecibilidad (puesto que no existe un estado inicial preciso nunca)
La concurrencia salvaje, es no determinista
¿Debería sorprendernos que partiendo de un modelo no determinista tenemos efectos cuánticos muy claros?
¿Sería posible deducir casi todos los principios de la mecánica cuántica en la dirección opuesta?
Eso sería... el no determinismo no es una consecuencia, sino un principio
Pues no lo sé, porque yo no tengo suficiente coco, pero es una idea chula para pasar un rato
¿Si eso fuera posible, quizá se podrían encontrar nuevas consecuencias?
No hay comentarios:
Publicar un comentario