Professional Documents
Culture Documents
Alejandro DíazCaro
Empecemos por el principio. ¿Qué es la física cuántica? Bueno, es la física de lo muy
chiquito. Es la matemática que nos ayuda a predecir qué sucede con las partículas más
pequeñas que componen nuestro universo, como los electrones o los fotones. Y es distinta
de lo que se suele llamar física clásica, que trata de objetos más grandes, como los
planetas o las pelotas de fútbol. Por ejemplo, si pateo una pelota hacia un arco, puedo
hacer montón de mediciones del estado inicial, como por ejemplo la fuerza con la que lo tiro,
la velocidad del viento, el ángulo del tiro, el punto en que mi pié le pega a la pelota, la
distancia al arco, etc., y predecir si haré el gol o no. ¡La física clásica nos permite predecir
un gol! (si pudiésemos medir todas las variables, claro). Pero ¿qué pasaría en un mundo
donde al patear la pelota pudiese meter el gol y no meterlo… a la vez? Algo así es lo que
sucede con los fotones, que son las partículas que componen la luz. Supongamos que en
vez de un arco tenemos una pared con dos orificios. Si ponemos una linterna de un lado a
cierta distancia y nos paramos del otro lado, veremos a la luz pasar por los dos orificios.
Ahora, si tiramos una sola partícula de luz, un sólo fotón, contra una esa pared, podemos
tratar de hacer montón de mediciones del estado inicial, y aún así no vamos a poder
predecir si el fotón pasará por uno u otro orificio. Más aún, si ponemos detrás de esa pared
una pantalla o algo que reciba el fotón para determinar por donde pasó, veremos que el
fotón pasó por los dos orificios a la vez. Lo lógico con este experimento sería pensar que
nos equivocamos al creer que el fotón era una partícula, como una pequeña pelotita, el
fotón tiene que ser más bien una onda, así como el sonido, o
una ola del mar, la cual tiene sentido que pase por ambos
orificios a la vez. De hecho, en la pantalla se detecta un patrón
que se puede relacionar perfectamente con una onda. ¿Porqué
hablamos entonces de partícula cuando nos referimos al fotón,
si lo que detectamos es una onda?. El tema es que si en lugar
de poner la pantalla para detectar el fotón atrás de la pared, la
pusiéramos en la misma pared, en cada orificio, pues entonces
vamos a detectar que el fotón pasa sólo por uno de los dos orificios y no por ambos. Es
decir, veremos que el fotón se comporta como una partícula, como una pelotita y no como
una ola del mar. El comportamiento del mundo cuántico es así: No sólo muchas veces no
podemos predecir con precisión lo que va a suceder, sino que encima suceden cosas que
desafían a la intuición. Así de poco intuitiva es la cuántica, y sin embargo sirve para hacer
predicciones sobre el comportamiento del mundo subatómico, y gracias a estas
predicciones pudimos desarrollar los transistores, los lasers o el GPS.
Veamos cómo lucen las predicciones que podemos hacer con la física cuántica. Por
ejemplo, los vidrios polarizados funcionan porque dejan pasar ciertos fotones. Un fotón tiene
una característica que se llama polarización, que vamos a decir que viene dada por un
ángulo. Digamos que un vidrio polarizado puede determinar que sólo pasen los fotones que
tienen polarización vertical y no los que tienen polarización horizontal. ¿Y qué pasa si un
fotón está polarizado a 45 grados? Bueno, al chocar contra el vidrio, el fotón va a "elegir" al
azar si modificarse para estar polarizado horizontalmente o verticalmente y, de acuerdo a la
elección que hizo el fotón, puede pasar hasta tus ojos, o estrellarse contra el vidrio. Bueno,
técnicamente, el fotón no "elige", digamos que el entorno elige por él… y hay varias teorías
matemáticamente correctas para interpretar esto, como por ejemplo que el universo se
copia a sí mismo en un universo paralelo, y en un universo el fotón se va horizontalmente
mientras que en el otro va verticalmente... pero dejémoslo en que el fotón elige y que cada
uno interprete eso como más le guste. Digamos que
los fotones juegan a tirar la moneda. ¿Pero qué
pasa si, por ejemplo, no viene a 45 grados sino más
cerca de la vertical? Y, el fotón tampoco es tonto,
así que con mayor probabilidad se va a tirar para
ahí... ¡pero no siempre! Siempre están esos fotones
renegados que se rascan la oreja derecha con el
brazo izquierdo y se tiran para la horizontal, así
estén casi verticales. En realidad, si están casi
verticales, es menos probable que se tiren para
horizontal. De hecho, esa probabilidad se puede calcular precisamente. Podemos predecir,
con cierta probabilidad, cuál será el comportamiento del fotón.
Y ahora la pregunta... ¿qué tiene que ver todo esto con computación?. Volvamos al ejemplo
del vidrio polarizado, y elijamos un vidrio que deje pasar tanto los fotones polarizados
horizontalmente como los verticalmente, y nosotros nos ubicaremos detrás de ese vidrio. Es
decir que todos los fotones van a pasar, porque cada uno, al llegar al vidrio, elegirá si ir de
horizontal o de vertical, y el vidrio deja pasar ambas opciones, sólo que como nosotros los
veremos solamente una vez que estén del otro lado del vidrio, vamos a recibir todos los
fotones polarizados horizontalmente o verticalmente y no en ningún otro ángulo. De ahora
en más al horizontal le llamaremos "H", y al vertical "V". Y cuando un fotón esté en otro
ángulo (que es posible sólo antes de pasar por el vidrio), vamos a dar una descripción de
sus probabilidades de elección: diremos algo como "este fotón tiene probabilidad tal de
elegir H y probabilidad cual de elegir V". Y allí viene la similitud, quizá un tanto forzada, con
la computación clásica, donde se trabaja con valores binarios (los bits
, los famosos ceros y
unos, que acá son Hs y Vs), sólo que en este caso, nuestros bits cuánticos, son Hs, Vs y
esas superposiciones "probabilidad tal de ser H y probabilidad cual de ser V". Esa tercera
opción, de superposición, viene dada por lo que se conoce como amplitudes de H y de V. El
fotón está en un estado de superposición que, al pasar por el vidrio polarizado, tendrá cierta
probabilidad de modificarse en H o en V, y esas probabilidades están dadas por las
amplitudes. Es como si en la memoria de la computadora ahora autorizáramos a guardar
0s, 1s, o esas superposiciones raras, sólo que al leer esa superposición, sólo tendremos un
0 o un 1.
Una computadora lo que hace es modificar los datos en su memoria; los programas
modifican los valores de los bits que guardan. Por ejemplo, un programa llamado "negador"
sería uno que se fije en la memoria si hay un 0 y lo cambie por un 1 y si hay un 1 lo cambie
por un 0. En nuestra memoria cuántica, el programa negador se fijaría si hay un fotón en H
y lo modificaría hacia V, y un fotón en V lo modificaría hacia H. Y si el fotón está en
"probabilidad tal de elegir H y cual de elegir V", daría vuelta las amplitudes para que quede
"probabilidad tal de elegir V y cual de elegir H". Y hay muchas más opciones: con un bit, 0 o
1, lo único que puedo hacer es dejarlo como está, o utilizar el programa negador. En cambio
con un bit cuántico, puedo dejarlo como está, usar el programa negador, o cambiarlo a
cualquier otra superposición con las amplitudes que quiera. ¡Las posibilidades son infinitas!
Supongamos ahora que tenemos un programa súper complejo, que toma un fotón, con
alguna polarización, como entrada y modifica su polarización de alguna manera. Si
ejecutamos el programa en un fotón en H, se obtiene un resultado, si el fotón estaba en V,
habrá otro resultado. Y si el fotón estaba en superposición... ¡depende de qué pase cuando
el fotón llegue al vidrio! Puedo tener el resultado del programa que se obtiene cuando el
fotón está en H, si el fotón elige modificarse a H, o el del programa cuando el fotón está en
V, si el fotón elige eso. Es decir que al ejecutar el programa sobre una superposición, es
como si lo ejecutáramos sobre los dos valores a la vez, (aunque sólo uno vaya a sobrevivir
al llegar al vidrio). Por ejemplo si tomamos el programa negador y lo utilizamos sobre un
fotón en estado "probabilidad tal de elegir H y cual de elegir V", lo cambia por "probabilidad
tal de elegir V y cual de elegir H". ¡Se ejecutó sobre H y sobre V a la vez!, pero al llegar al
vidrio, vamos a ver una H con probabilidad "cual" o una V con probabilidad "tal". O sea que
el programa se ejecutó sobre ambos valores a la vez, pero sólo obtuvimos, al azar, uno de
los dos resultados. ¿Se podrá utilizar de alguna manera el hecho de que el programa se
ejecuta una sola vez sobre todos los valores posibles? Parecería una ganancia en términos
computacionales: ejecutar el programa una sola vez en lugar de dos para obtener todos los
valores en superposición, suena interesante… si no fuese por el vidrio que me deja sólo un
resultado.
Y ahí, para responder a esa pregunta, llegó Lov Grover, a quien se le ocurrió cómo usar
este raro comportamiento cuántico para hacer la computación más eficiente, al menos en un
caso particular. Bueno, hubo otros usos de la computación cuántica antes del que se le
ocurrió a Grover, pero el de Grover es el primer programa cuántico que podría tener una
utilidad práctica (si ya existiese una computadora cuántica, claro).
El problema a resolver es el siguiente: supongamos que tenemos que buscar a quién
pertenece un número de teléfono y sólo tenemos una guía. Lo que deberíamos hacer es
recorrer la guía completa buscando ese número. El "programa" que aplicamos a cada
registro de la guía es: lo miramos, si es el que buscábamos, gritamos "¡eureka!", si no es,
no gritamos nada. Obviamente que con este método, paramos cuando gritemos ¡eureka!.
En el peor caso (el caso Murphy) vamos a tener que recorrer toda la guía y el último número
será el que estábamos buscando. En el mejor caso (el caso imposible, nunca me suceden
cosas así), abrimos la guía y el primer número que vemos es el que buscábamos. Digamos
que en el promedio tenemos que recorrer la mitad de la guía.
Veamos cómo nos ayudaría la cuántica. La configuración inicial es la siguiente: Agarremos
muchos fotones. Necesitamos que la cantidad de fotones sea suficiente para codificar en
binario todos los registros de la guía. Por ejemplo, poniendo todos los fotones en H nos
referimos al primer registro. Poniendo todos los fotones en H excepto el último que lo
ponemos en V, es el segundo. Todos en H excepto el ante último es el tercero, todos en H
excepto los dos últimos es el cuarto, y así sucesivamente. Ahora construyamos el programa
eureka que cuando le damos una combinación de fotones, cada uno en H o V, mire el
registro al cual corresponde esa combinación, y grite ¡eureka! si allí está el número de
teléfono que estábamos buscando.
Lo que debemos hacer luego es tomar todos los fotones y poner cada uno en superposición
de H y V (con la misma probabilidad de elegir H que de elegir V al llegar al vidrio
polarizado). Es decir que tenemos una superposición de todos
los registros. Entonces ejecutamos el programa eureka una sola
vez con estos fotones superpuestos. Con alguna de las
combinaciones el programa va a gritar ¡eureka! Es decir,
tendremos la superposición de todos los casos donde no se gritó
¡eureka! y un caso donde se gritó ¡eureka!. Claro que al llegar a
nosotros, que seguimos detrás de nuestro vidrio polarizado,
cada fotón estará en H o V y no en superposición, y por
supuesto que la combinación de Hs y Vs que recibamos no
necesariamente será la combinación que gritó ¡eureka!. O sea, cuando los fotones llegaron
al vidrio, cada uno se decide por H o por V aleatoriamente, no tengo porqué suponer que la
combinación que quiero (aquella que gritó ¡eureka!) es justo la que va a ser elegida. Pues
bien, la combinación del ¡eureka! es, de alguna manera diferente a las otras (en definitiva es
la que grita algo). Lo que necesitamos es otro programa que
tome una superposición, donde está la que grita ¡eureka!, y
suba la probabilidad a la combinación ¡eureka! (bajando la
probabilidad del resto). Y ese programa es posible crearlo. Sólo
es necesario que el programa eureka deje una marquita en la
amplitud de la que le queremos subir la probabilidad (que
técnicamente, esa marquita es lo que se llama una "fase"). A
este programa que sube la probabilidad de la combinación que
tiene la marquita vamos a llamarle programa "elegidor", ya que
es el que hace que el fotón elija la combinación adecuada al llegar al vidrio. Ejecutamos una
vez el programa elegidor, y nos sube la probabilidad de obtener el resultado que queremos.
Sólo que el programa elegidor, al cambiar la probabilidad, en realidad lo que cambia es la
amplitud, por lo que elimina esa marquita que había dejado el programa eureka. Por lo
tanto, si queremos volver a ejecutar el programa elegidor para subir más la probabilidad,
primero devemos volver a ejecutar eureka para volver a poner la marquita. Ejecutando
muchas veces el programa eureka seguido del programa
elegidor sobre nuestra combinación, subimos cada vez más la
probabilidad de que al llegar al vidrio, el fotón elija modificarse
en la combinación del ¡eureka!. Pero hay una salvedad, el
programa elegidor no se puede ejecutar infinitamente, es
cíclico, y luego de cierto número de veces la probabilidad del
¡eureka! empieza a bajar nuevamente. De hecho la cantidad de
veces óptima para repetir eureka y elegidor es la raíz cuadrada
del número de registros que tenemos. Es decir que los pasos
de la receta que estamos dando son: aplicar una vez el programa eureka, luego el programa
elegidor, y luego repetir una cantidad de veces dada por la raíz cuadrada del número de
teléfonos que tenemos en la guía. Y listo, al llegar al vidrio tendremos una probabilidad muy
muy alta de que pase la combinación del ¡eureka!. Por lo tanto, la cantidad de pasos totales
es la raíz cuadrada del número de registros, que es la cantidad de veces que ejecutamos
eureka seguido de elegidor. Dijimos que el programa clásico, en promedio, necesitaba
recorrer la mitad de los registros. La raíz cuadrada del número de registros de la guía es
más chico que el la mitad del número de registros, así que el programa cuántico hace
menos pasos que el clásico.
Un año después de que Lov Grover ideara este algoritmo, llegó Peter Shor, a quien se le
ocurrió otro algoritmo, con una ganancia mucho más impresionante respecto de la
computación cuántica. El algoritmo de Shor permite factorizar números. Es decir, es un
algoritmo que, dado un número muy grande, te dice cuáles números primos deberías
multiplicar para obtener ese número. Y es un resultado muy importante, porque hoy en día,
la mayoría de los sistemas de encriptación basan su seguridad en que para una
computadora clásica, es muy difícil factorizar números grandes, es decir, un programa
clásico va a tener que hacer muchísimos pasos para poder resolver ese problema. Y en
cambio, Shor demostró que con una computadora cuántica se puede hacer en una cantidad
de pasos exponencialmente menor. Es decir que si existiese una computadora cuántica que
pueda manipular la cantidad necesaria de fotones, podríamos romper casi todos los
sistemas de criptografía actuales. Aunque también, la computación cuántica, nos ofrece
otras maneras de encriptar, que ni una computadora cuántica puede romper. Es decir que la
computación cuántica sube un nivel más en la criptografía: rompe la criptografía actual y
provee una criptografía más segura.
Todo este proceso de lo que le hacemos a los pobres fotones lo describimos como una
receta, como un programa, pero bien podríamos haberlo descrito como un experimento de
laboratorio, donde este programa simplemente nos dice los pasos a seguir y nos da las
predicciones de lo que va sucediendo a cada paso. Es decir, un programa cuántico no es
más que la descripción de un experimento. Por lo que la computación cuántica no sólo es
interesante porque nos permite construir programas más rápidos, sino que también nos
permite describir experimentos físicos de una manera muy estructurada. Es más, es tan
estructurada que podríamos definir la lógica detrás de la física cuántica. Una lógica es un
conjunto de reglas que permiten demostrar matemáticamente que un razonamiento es
correcto con respecto a esas reglas. Si definimos reglas indiscutibles, que estemos seguros
de que tienen sentido, demostrar que un razonamiento tiene sentido con respecto a esas
reglas es demostrar que el razonamiento tiene sentido a secas. Que es lógico,
digamos. En
computación y en matemáticas, existen muchos sistemas lógicos diferentes, es decir,
conjuntos de reglas que nos dicen si un razonamiento es válido de acuerdo a esas reglas.
Cada una de esas lógicas sirve para describir diferentes sistemas. En particular, cada
lenguaje de programación tiene una lógica detrás. ¿Y qué pasa con la computación
cuántica? Si analizamos la lógica detrás de un lenguaje que nos permita describir estos
programas cuánticos, ¡tenemos una lógica detrás de la física cuántica! Es decir que no sólo
tendremos la física que nos da las predicciones de los experimentos, sino también un
sistema lógico que nos permitirá demostrar con certeza matemática si el razonamiento
detrás de la predicción es correcto. Y eso va más allá incluso que de la ganancia
computacional de la cuántica, nos da una nueva herramienta para razonar sobre este
mundo tan poco intuitivo que es el de las partículas elementales de nuestro universo.
Algunas referencias:
● Experimento de la doble rendija https://es.wikipedia.org/wiki/Experimento_de_Young
● Algoritmo de Grover
https://es.wikipedia.org/wiki/Algoritmo_de_Grover
● Algoritmo de Shor
https://es.wikipedia.org/wiki/Algoritmo_de_Shor
● Criptografía cuántica
https://es.wikipedia.org/wiki/Criptografía_cuántica
● Michael Nielsen e Isaac Chuang, Quantum Computation and Quantum Information
http://www.cambridge.org/us/academic/subjects/physics/quantumphysicsquantumi
nformationandquantumcomputation/quantumcomputationandquantuminformatio
n10thanniversaryedition
● J. Michael Dunn, Lawrence S. Moss y Zhenghan Wang, “The third life of quantum
logic: Quantum logic inspired by quantum computing”, Journal of Philosophical Logic
42 (3): 443459. 2013. http://arxiv.org/abs/1302.3465