El experimento teórico del gato de Schrödinger ha dado lugar a muchas teorías y ha servido como justificación de muchas hipótesis demasiado atrevidas. Desde la justificación del relativismo o la afirmación de que la verdad la creamos nosotros al observarla, hasta la teorización de los universos paralelos… Sin embargo, el experimento del gato tiene una trampa: Afirma que el gato siempre estuvo vivo y muerto a la vez, hasta que llegó el observador y lo vio vivo o muerto, pero sólo una de las dos. Sin embargo, tal vez sea yo muy estúpido, al pensar en el experimento llego a la conclusión de que el gato siempre estuvo muerto, sin necesidad de esperar al observador. Quizá porque soy tonto, o quizá porque tengo formación de informático.
El caso es que el experimento requiere de un sistema que reciba los estados de un átomo, pudiéndose dar el estado A o el estado B, o ambos a la vez… como es el caso.
El sistema debe “decidir” si mata al gato liberando un veneno, o lo deja vivir sin liberar el veneno, en función de cuál de los dos estados se estén dando.
El experimento sólo puede ser teórico porque en la práctica se considera que toda medición provocaría un colapso de la función de onda y por ello sólo se podría observar uno de los estados del átomo. Por lo que debemos tragar, y lo hacemos, con la primera trampa de la teoría de este experimento y aceptamos la posibilidad imposible de que nuestro sistema de decisión reciba los dos estados a la vez y los interprete.
El sistema que debe matar o permitir vivir al gato, no deja de implicar un algoritmo que contiene una entrada de información, realiza unos procesos y ofrece un resultado.
La entrada de información son cada uno de los estados del átomo. El resultado es determinar si el gato debe morir o vivir. Los procesos intermedios son los que deciden el resultado en función de la entrada de información.
Por otro lado, hay una situación inicial y esto es importante, porque una opción sería que el algoritmo colapsara al recibir una información que interpretara incorrecta o improcesable y llevara a un bloqueo. En tal caso el algoritmo no se ejecutaría y la situación final sería la misma que la inicial. Puesto que un gato vivo puede morir, pero un gato muerto no puede revivir, entendemos que la situación inicial es que el gato está vivo.
Sólo si se da uno de los estados, pongamos que el estado B, el algoritmo llevaría a un cambio de situación, liberando el veneno y matando, por tanto, al gato.
Es decir, hay un estado, el estado A, que se relaciona con una acción pasiva del sistema; y otro estado, el estado B, que se relaciona con una acción activa.
En un sistema informático normal, el código que determinaría la suerte del gato tendría el siguiente aspecto:
Variable Estado = Recibir estados del átomo
Si Estado es A entonces {
Acción: Dejar vivir al gato
} Si no {
Acción: Matar al gato
}
Con un código así, el gato viviría siempre, pero no sería un código del todo adecuado. Hemos olvidado algo: considerar los estados como independientes. Esto es: dado que se pueden superponer, el estado A no excluiría ni implicaría nada con respecto al estado B. A nivel de programación deberían mirarse por separado, habría que preguntar si se da un estado y ejecutar las acciones correspondientes en caso afirmativo y luego hacer lo mismo con el otro estado. Esto es:
Variable Estado = Recibir estados del átomo
Si Estado es A entonces {
Acción: Dejar vivir al gato
}
Si Estado es B entonces {
Acción: Matar al gato
}
Dado que tanto “A” como “B” siempre se dan, el algoritmo entrará a ejecutar ambas acciones. Primero dejará vivir al gato y después lo matará. Y dado que, como hemos dicho anteriormente, la opción “A” es pasiva (no cambia la situación inicial) y además todo gato vivo puede morir pero ningún gato muerto puede vivir, el código se podría simplificar y reducir a lo siguiente:
Variable Estado = Recibir estados del átomo
Si Estado es B entonces {
Acción: Matar al gato
}
Nos da igual si el estado A se da o no se da, porque no cambia nada. Lo que nos importa, porque produce un cambio con respecto a la situación inicial, es si se da el estado B. Y como el estado B se da siempre, el sistema siempre liberará el veneno y matará al gato. Lo matará siempre.
Porque la superposición no se rompe con la llegada del observador, sino con el sistema que es incompatible a la propia superposición: es el sistema el que no puede ofrecer que el gato viva o muera a la vez y, por tanto, decide sobre la vida o la muerte del gato de forma unívoca.
El problema del gato de Schrödinger es que hace una trampa lógica. Es como si hablamos de la siguiente situación:
Un semáforo puede estar verde o rojo (como el átomo que puede estar en el estado A o el estado B). Un coche viene y debe decidir pasar o no, en función del estado del semáforo (como el sistema que deja vivir o mata al gato). Pero de pronto, el semáforo falla y se quedan encendidas todas las luces, estando en verde y rojo a la vez. Es una situación real, yo lo he visto más de una vez. El coche decidirá pasar o no pasar. Elegirá una de las dos opciones. No se dividirá el mundo en dos universos paralelos. No dependerá de si un vecino mira desde una ventana. Nada de eso. El semáforo puede estar en dos situaciones al mismo tiempo. Puede tener el rojo y el verde encendidos a la vez. Pero el coche no puede pasar y no pasar. Tiene que elegir. Y elige. Prioriza una de las dos opciones. Normalmente será la de pasar. Y lo digo porque es una situación real que a veces se da. Y los coches terminan pasando.
Pero el problema que planteamos aquí no es cosa del conductor del coche, el problema es que todo sistema de elección, sea automatizable o sea humano, si la elección obliga a un resultado unívoco, de una forma u otra priorizará una opción. Y si se busca evitar una priorización, obligando al sistema a no hacer nada si se dan al mismo tiempo dos estados que llevan a resultados incompatibles, el sistema estará priorizando el resultado equivalente a la situación inicial. En el caso del coche, si estaba parado seguirá parado; si estaba moviéndose, seguirá moviéndose y cruzando el semáforo. En el caso del gato, el veneno no se liberará y seguirá vivo.
Para que esto sea así, el código deberíamos modificarlo añadiendo que si se dan los dos estados del átomo no haga nada. Para ello, una vez que sabemos que se está dando el estado “B” debemos incluir que no se dé también el otro estado, antes de matar al gato:
Variable Estado = Recibir estados del átomo
Si Estado es B entonces {
Si Estado NO es A entonces {
Acción: Matar al gato
}
}
Sólo así el gato vivirá, dado que el algoritmo entra en la primera condición, pero no en la segunda. Pero claro, esto rompe con el espíritu del ejercicio, que quiere que se ejecuten las dos opciones al mismo tiempo, en vez de anularse. Por tanto, volvemos al código anterior, que sería el correcto:
Variable Estado = Recibir estados del átomo
Si Estado es B entonces {
Acción: Matar al gato
}
Y si volvemos al código anterior, volvemos a la situación anterior: El gato siempre muere. O si nos ponemos en el momento, no de la ejecución del mecanismo, sino en el que el observador decide abrir la caja, tenemos que afirmar: El gato siempre estuvo muerto. Nunca hubo una superposición de estados entre el gato vivo y el gato muerto. Siempre, absolutamente siempre, estuvo muerto.