Estoy seguro de que muchos habréis oído hablar del concepto "Computación Cuántica", esa cosa mística que promete ser la próxima revolución en informática. Pero, ¿qué es? ¿Por qué va a ser la próxima revolución? ¿Qué tiene de especial, qué la diferencia de la computación tradicional?
En Genbeta hoy nos hemos decidido a bucear en este tema, y vamos a tratar de explicar, de forma simplificada y con pocos números y símbolos, en qué consiste la computación cuántica. Por otra parte, en Xataka veremos los retos a los que se enfrenta esta tecnología.
¿Pero por qué?

¿Qué se le pasaba por la cabeza a Feynman (y a otros) para buscar algo más allá de la informática clásica?
La primera pregunta que se nos debería ocurrir cuando hablemos de computación cuántica es: ¿por qué? ¿Qué clase de pensamientos malvados tenían en la cabeza los pioneros de este campo? ¿No les bastaba con la informática tradicional?
Pues lo cierto es que no. A los físicos no les bastaba. Uno de los primeros "momentos de lucidez" es la charla de Richard Feynman en 1982, en la que explicaba cómo era imposible simular sistemas cuánticos en ordenadores tradicionales.
La razón es que estos sistemas son muy complejos. Y no complejos por la teoría que tienen detrás (que también) sino por el número de estados posibles que pueden tener.
Supongamos que queramos simular el movimiento de las bolas en una mesa de billar en un ordenador. Para cada bola, tenemos que guardar dos cantidades: cuánto se mueve a lo largo y cuánto a lo ancho. Dos números por cada "elemento del sistema".
Hay tantos estados posibles en un sistema cuántico que es impracticable simularlos con un ordenador tradicional. Necesitamos más.
Ahora bien, ¿qué pasa si nuestras bolas de billar son "bolas cuánticas" (sea lo que sea eso)? Si sólo tenemos una es fácil: tenemos que guardar cuánto se mueve a lo largo y cuánto a lo ancho. La cosa se complica si tenemos dos bolas. Para la primera, tenemos que guardar cuánto se mueve en esas dos direcciones, pero además cuánto se mueve a lo largo y a lo ancho _con respecto a la segunda bola_ (luego veremos por qué). Cuatro medidas. Si añadimos una bola más al sistema, necesitaremos saber las dos direcciones con respecto a la tercera bola, y además cuánto se mueve a lo larcho y ancho _con respecto al movimiento conjunto de la segunda y tercera bola_. Un lío.
Por suerte, ese lío está matemáticamente bien definido. Es un lío exponencial. Si tenemos _n_ bolas, necesitaremos _2n_ medidas por cada una. Y esto tiene consecuencias importantes.
Si tenemos nuestra mesa de billar normal con 2.000 bolas y añadimos una más, necesitaremos guardar dos medidas más. Con nuestra mesa de billar cuántica, si tenemos 2.000 bolas y añadimos una más, necesitamos el doble de medidas. Si en la mesa clásica nos quedamos sin capacidad, nos ponemos el gorro de fabricante de móvil y ponemos una CPU más y otro GB de RAM (por ejemplo) y listos. Si en la mesa cuántica nos quedamos sin capacidad para simular, tenemos que doblar nuestra capacidad de proceso. Ya podéis imaginaros que, en la práctica, es irrealizable hacer simulaciones cuánticas con un número grande de partículas en un ordenador clásico.

Por qué importa
El hecho de que un ordenador cuántico evolucione de forma exponencial implica que siempre podemos lograr que sea más rápido que uno tradicional. La analogía la tenéis en el gráfico: ya podemos coger el peor modelo de ordenador cuántico y el mejor tradicional, que al final el cuántico siempre acabará siendo mejor.
Pero, ¿y si usamos un ordenador cuántico? ¿Y si conseguimos aprovechar de alguna forma esa _faceta exponencial_ de las partículas cuánticas para que al añadir una CPU más, siempre dupliquemos la capacidad de procesamiento?
Esa es la idea de la computación cuántica. Aprovechar los estados entrelazados de las partículas para obtener más potencia, calculando a una escala mucho mayor.
Un poco de física
Si la explicación de antes con bolas de billar os ha convencido de que las partículas cuánticas están entrelazadas, podéis saltaros esta sección. Si no, vamos a tener que meternos un poco en el mundo de la física (y en el de la matemática también) para entender qué es lo que hay por detrás de esa característica fundamental de la computación cuántica.
Imagino que todos estaréis familiarizados con el principio de conservación de la energía, que nos dice que la energía de un sistema aislado siempre se conserva. Por ejemplo, si tu tiras un balón en el vacío (donde no hay aire y por lo tanto no hay rozamiento) girando a 10 vueltas por minuto, siempre seguirá girando a la misma velocidad. No cambiará la velocidad de giro a no ser que haya alguna influencia externa.
Bien, ahora supongamos que vuestro balón se divide en dos minibalones a mitad de camino. No ha habido ninguna influencia externa, así que esa "velocidad de giro" debería mantenerse. Si un minibalón está girando a 10 vueltas por minuto, el otro no puede estar girando porque si no habríamos sacado vueltas de la nada, cosa que la física nos dice que no se puede.
Podríamos decir que la velocidad de giro de esos dos minibalones está _entrelazada_. Si mides la velocidad de un balón, sabrás automáticamente la velocidad del otro.
Algo así, más o menos, es lo que ocurre con el entrelazado cuántico. Una medición en una partícula determina exactamente qué es lo que se medirá en la otra, por muy lejos que esté. Sin embargo, hay una diferencia fundamental con el ejemplo de los minibalones.
En el caso de los minibalones, cuando ambos se dividen tienen una velocidad de giro concreta. Lo único que pasa es que no sabemos cuál es, pero tenerla la tienen. Pero si nos vamos al mundo cuántico, la cosa no es exactamente así. Dos minibalones cuánticos no tendrían una velocidad y dirección de giro concretas: tienen varias superpuestas, y cuando lo medimos lo que hacemos es _fijar_ esa dirección.
Ese es el otro concepto "extraño" de la física cuántica: la superposición de estados. La superposición nos interesa mucho porque es otro fundamento de la computación cuántica. Más tarde veremos por qué, pero de momento nos centramos en la física.
Seguro que muchos habéis visto alguna vez gafas de sol polarizadas. Estas gafas aprovechan una característica cuántica de los fotones (las partículas de luz): el _spin_, que podemos imaginarnos ahora como una pequeña oscilación en una dirección, como veis en imagen.

La trayectoria de la partícula es la línea negra. Pero además, puede oscilar horizontalmente (rojo) o verticalmente (azul).
Las gafas de sol están polarizadas en una dirección, y actúan como un muro con rendijas horizontales. Un fotón que haya pasado a través de las gafas de sol sólo podrá haber salido por esas rendijas, y por lo tanto estará oscilando horizontalmente, de lado a lado.
Pero si tenéis unas gafas polarizadas a mano y miráis a través de ellas, en seguida os daréis cuenta de que os estoy mintiendo en algo. Con todas las posibles direcciones que puede tener una oscilación (infinitas), debería haber muy pocos fotones con oscilación exactamente horizontal. Es decir, debería pasar muy poca luz por las gafas, y sin embargo, si os las ponéis, veréis que pasa bastante. ¿Qué está pasando?

Cualquier dirección en la que oscile se puede expresar como dos componentes: una horizontal y otra vertical. No siempre podemos decir que oscile en horizontal o en vertical, sino que lo correcto es decir que oscila en una dirección que es una combinación de ambas. Por volver a la nomenclatura física: está en una superposición de estados de oscilación vertical y horizontal.
Volvamos a las gafas y al muro con rendijas. Lo que ocurriría en nuestra analogía es que no sólo pasan los fotones que oscilan en horizontal. Es muy probable que los que oscilan _casi_ en horizontal también acaben pasando porque justo cuando llegan al muro tienen un ángulo que les permite entrar. Eso sí, cuando salgan de ella se habrán "golpeado" y la oscilación habrá cambiado: siempre saldrán con la dirección de las rendijas. Cuanto más horizontal sea la oscilación, mayor será la probabilidad de que acaben entrando en alguna rendija.

Gafas de sol polarizada, física cuántica en tu cara. Tecnología puntera que ríete tú de Google Glass.
El experimento de las gafas de sol y la luz polarizada es interesante, y si os fijáis tiene implicaciones importantes. ¿Cómo podemos medir la componente horizontal _y_ la vertical de un fotón? Hemos dicho que cuando pasa por el cristal polarizado horizontalmente (o muro con rendijas, si lo preferís) siempre sale con oscilación horizontal. Y es que hemos cambiado la oscilación del fotón al medirlo.
Nunca podremos medir con total precisión ciertos aspectos físicos de una partícula.
Y eso no es una limitación del experimento. Es una limitación física, llamada el Principio de Incertidumbre de Heisenberg. Es imposible ser 100% precisos a la hora de medir magnitudes físicas emparejadas, como pueda ser la componente horizontal y vertical de oscilación de ese fotón, porque no podemos medir sin tocar la partícula, y por lo tanto modificando alguna de sus magnitudes.
Hasta aquí la "introducción" física de este artículo. Si sois físicos, es posible que hayáis encontrado algunas imprecisione. Unas son intencionadas para simplificar las cosas, en algunas me habré equivocado: la física cuántica es un tema muy complejo y difícil de entender.
Independientemente de ello, tenemos que quedarnos con dos ideas fijas: el entrelazamiento y la superposición de estados.
La computación cuántica: el primer algoritmo

Ahora que ya tenemos los fundamentos de la cuántica que nos interesan, vamos a aplicarlos a la informática. Para ello, el enfoque es simple: vamos a tratar de reproducir lo más básico de un ordenador y a partir de ahí ver si podemos construirlo como si fuese tradicional. De hecho, sólo esa parte básica nos bastará para entender qué es lo que hace tan especial a la computación cuántica.
¿Y qué es ese bloque básico de la computación tradicional? Pues las puertas lógicas. Tienen una o varias entradas; según pase o no electricidad por ellas sacarán o no electricidad por la salida. Por ejemplo, el inversor tiene una entrada y una salida: si la entrada no está conectada saldrá electricidad, y viceversa. Otro ejemplo, la AND (y, conjunción): sólo sale electricidad cuando las dos entradas tienen electricidad.
De la misma forma, se diseñaron puertas similares para ordenadores cuánticos. Y si las puertas clásicas operan sobre bits, donde un 1 es "hay electricidad" y un 0 es "no hay electricidad", las cuánticas operan sobre qubits. Los qubits se refieren a magnitudes físicas emparejadas. Por ejemplo, un 0 sería "el fotón oscila horizontalmente" y un 1 sería "el fotón oscila verticalmente". Como veíamos antes, no sólo hay horizontal y vertical, sino que puede haber una combinación o superposición de ambas.
Las puertas cuánticas operan sobre los qubits de una forma peculiar. Podemos imaginar una puerta que sea una rotación, que modifique la dirección oscilación de una partícula en 90 grados (un cuarto de vuelta). Si tenemos en cuenta que la oscilación tiene dos componentes, lo que hace la puerta es rotar 90 grados la oscilación horizontal y rotar también 90 grados la vertical.
No sé si os habréis dado cuenta de la sutilidad que hay ahí. Con un único "cable", una única puerta y una única operación, hemos obtenido dos resultados.
Unamos eso a lo que habíamos visto antes del entrelazamiento. Cuando tenemos dos qubits cada qubit tendría cuatro "componentes" o estados: la oscilación horizontal y vertical, y además la horizontal y vertical _con respecto a la oscilación horizontal y vertical del otro qubit_2 respectivamente. Al hacer una transformación sobre dos qubits, haríamos cuatro operaciones.
Una única operación para calcular múltiples valores al mismo tiempo.
Generalizando, la gran ventaja de la computación cuántica es, como decíamos antes, que con una transformación sobre _n_ qubits podemos hacer _2n_ operaciones al mismo tiempo.
De esta forma, problemas que se consideraban "difíciles", como por ejemplo la factorización de números, se convierten en "fáciles". Peter Shor diseñó en 1994 un algoritmo para factorizar cualquier número en tiempo polinómico (es decir, "rápido"). Y ese algoritmo es interesante porque precisamente RSA, que protege nuestros datos cuando navegamos, basa su seguridad en el hecho de que se tarda muchísimo (años) en factorizar un número arbitrario suficientemente grande. Dicho de otra forma, la computación cuántica sería toda una revolución en el mundo de la seguridad. Y eso sólo con un algoritmo.
¿Y cómo programo para un ordenador cuántico?

Como todo en la vida, la computación cuántica no es _tan_ bonita. Sí, podemos paralelizar cálculos con mucha más facilidad, pero hay un problema. Recordemos las gafas de sol y el muro con rendijas. Decíamos que sólo podíamos medir una _componente_ de cada uno de los fotones: con los qubits pasa lo mismo. Pueden estar en una superposición de todos los estados que quieras, pero sólo puedes obtener un 1 o un 0 al medir cada uno de ellos. Es decir, a pesar de que en un conjunto de 3 qubits "haya" ocho (23) componentes o estados, sólo obtendrás 3 cuando mires cada uno de los qubits.
El problema de la computación cuántica es que no podemos medir y obtener todos los valores que se calculan al transformar qubits
Esto implica que hay que cambiar la forma de pensar a la hora de diseñar los algoritmos para ordenadores cuánticos. Por ejemplo, el algoritmo de Shor se basa en resultados de álgebra, que establecen una relación entre factores de un número y el período de una función específica. Aprovechando esa capacidad que comentábamos de hacer varias operaciones a la vez, el algoritmo de Shor calcula muchos valores de la función usando los estados de varios qubits, y después aplica la transformada de Fourier cuántica (por si la transformada de Fourier no diese miedo ya de por sí) para combinar todos esos resultados de tal forma que, al medir el estado de los qubits, se obtenga el período de la función de forma aproximada.
Ahora mismo, esa es una de las principales barreras teóricas para desarrollar algoritmos enfocados a ordenadores cuánticos: sí, podemos hacer muchísimas operaciones, pero no podemos obtener los resultados de todas ellas y hay que buscar formas de extraer la información que nos interesa de ahí.
Las dificultades, sin embargo, no se acaban ahí. En Xataka desarrollaremos los retos a los que se enfrenta ahora mismo la computación cuántica, qué le falta para ser realizable en la práctica y los avances que se han logrado hasta ahora.
En Xataka | La computación cuántica en la práctica: los retos a superar para convertir teoría en realidad
Ver 26 comentarios
26 comentarios
Eagle
Si os interesa el tema y queréis empezar desde cero a entenderlo (yo estoy en ese proceso), os recomiendo esta serie:
http://eltamiz.com/elcedazo/2014/01/04/computacion-cuantica-i-introduccion/
johnrivs
Mientras estaba leyendo el artículo, pensé: "Fijo que esto es de Guillermo".
Subí arriba y ví el autor.
Tus artículos están curradísimos.
forestrf
TL;DR.
En computación clásica 1 bit tiene 2 estados: 0 y 1
En computación cuántica 1 bit tiene 3 estados: 0, 01 y 1
O lo que es lo mismo, se trabaja en base 3 y no en base 2 dando lugar a cálculos más rápidos al procesar más información en menos tiempo.
Pero esta ventaja solo sirve en ciertos casos al no ser tan simple, pero esa es una de las bases.
PD: No está todo descubierto en relación a la física cuántica por lo que no podemos saciar nuestra curiosidad con solo buscar por internet. Si no puedes encontrar respuestas sencillas o símplemente encontrarlas sobre un tema relacionado con esto es porque no es sencillo y/o todavía no se ha descubierto o confirmado.
Javier de la Dehesa
Genial el post, es muy complicado dar unas pinceladas acerca de la computación cuántica sin resultar absolutamente incomprensible y creo que, dentro de lo que es una explicación simplificada, es bastante completo y accesible.
f3rgs
Cuánticas veces tengo que leerlo para entenderlo...
motorheavy
Wow que artículo impresionante!!!Se ve muy interesante esto de la computación cuántica, muchas gracias por este artículo tan logrado y bien explicado.
elusuarioadministrador
El ejemplo que pones no es correcto, calcular la trayectoria física de n bolas mediante un algoritmo no es un problema exponencial, sino lineal.
Aleix Murtra
No tenía ni idea de como funcionaba, y la verdad es que aún no lo entiendo pero me habéis ayudado a entenderlo un poco mas.
La parte de los fotones me recuerda a la modulación QAM del ADSL y al CDMA del 3G. Que se puede transportar un numero de señales diferentes mayor a 2 en un único cable o señal.
coffspring
Me parece que lo he entendido, ¿la policía sabia que los de asuntos internos les tendían una trampa?
lotiopep
Muy currado! Gracias.
axel_rudi
Ya tengo un D-Wave One encargado para navidades. Haber cuantos fps saco al battlefield :)
editorenbici
Genial articulo! muchas gracias
zyhdo
No entendí una mierda... Pero lo haré.
sebaz84
Una pasada de artículo, cada vez me gusta más este blog, saludos!
kilek
Estupendo artículo, mi enhorabuena Ya van varias veces que me veo en apuros cuando alguien me pide que le explique la computación cuántica y no se como explicarselo para que lo entienda, en este articulo esta bastante claro al menos para entender sobre que va todo el tema Vamos, como que se ha ido derecho a mi selectisima y escasa lista de marcadores para tenerlo a mano cuando vuelva a ver a varias personas
donattello
Guillermo Julián, aprecio los post que desarrollas, tratas los temas con propiedad. Pero lamento decirte que en esta oportunidad las cosas no salieron del todo bien. Escogiste ejemplos que si bien pueden ayudar a entender el tema, no guardan un hilo coherente y, dificilmente, pueden llevar a conclusiones claras. Cogistes ejemplos de diversas publicaciones pero, entre si, no guardan una secuencia lógica, el lector no va encontrar un hilo claro, la relación "causa-efecto". El tema es difícil, SI! Te sugiero reorientarlo arrancando por los spin, la raíz "material" del tema. Creo que daría un mejor resultado.