Disfruta de la experiencia cuántica de IBM

Por Francisco R. Villatoro, el 2 noviembre, 2018. Categoría(s): Ciencia ✎ 6

¿Te gustaría usar un ordenador cuántico? La experiencia cuántica de IBM te ofrece el acceso gratuito a un ordenador cuántico vía un servicio en la nube. Hasta marzo de 2017 el uso de un ordenador cuántico de pocos cúbits estaba reservado a algunos investigadores. La iniciativa IBM Quantum Experience ofrece el acceso a pequeños ordenadores cuánticos basados en tecnología superconductora. En concreto, tras aprender a programar usando un simulador, puedes usar IBM QX2 (IBM Q 5 Yorktown) o IBM QX4 (IBM Q 5 Tenerife), ambos de 5 cúbits, o IBM QX5 (IBM Q 16 Rueschlikon), de 16 cúbits; antes también había acceso a IBM QX3 de 16 cúbits. Sin lugar a dudas, esta iniciativa de IBM ya ha pasado a los libros de historia de la computación cuántica.

En mi opinión, los profesores de cursos de física cuántica no deberían desaprovechar la oportunidad ofrecida por IBM. Más aún, tampoco los estudiantes de bachillerato más frikis que quieran estar a la última. Por supuesto, estos ordenadores cuánticos no se programan como un ordenador convencional. Para usarlos, lo primero que tienes que hacer es aprender a programarlos. Para ello IBM ofrece un simulador de los ordenadores de 5 cúbits que deberás dominar antes de pasar a la máquina real. No debes olvidar tampoco que estos ordenadores cuánticos tienen una alta tasa de error (que crece conforme aumenta la longitud del programa); en el simulador obtendrás la respuesta correcta el 100% de las veces, pero en un ordenador IBM QX2 o IBM QX4 es imposible evitar que la decoherencia degrade la ejecución de tu programa. Por ello, conviene optimizar el programa en el simulador antes de ejecutarlo en la máquina real. A pesar de ello, poder usar un ordenador cuántico desde casa merece la pena.

El editor gráfico de programas cuánticos (IBM QX editor), para los ordenadores de 5 cúbits, ofrece algo parecido a un pentagrama musical donde se colocan los operadores cuánticos (unarios, binarios y ternarios) a modo de notas musicales. Para usarlo sabiendo lo que haces debes leer el tutorial que ofrece IBM. También te recomiendo estudiar los ejemplos que aparecen en Patrick J. Coles, Stephan Eidenbenz, …, Wei Zhu, «Quantum Algorithm Implementations for Beginners,» arXiv:1804.03719 [cs.ET]. ¿Te gustaría implementar las operaciones básicas de la aritmética, como suma, resta, multiplicación y división? Te recomiendo Prathamesh P. Ratnaparkhi, Bikash K. Behera, Prasanta K. Panigrahi, «Demonstration of a Quantum Calculator on IBM Quantum Experience Platform,» ResearchGate preprint [PDF]. En lugar del editor gráfico puedes usar un lenguaje en modo texto (QISKit), como nos aclara la charla de Nick Bronn, «Quantum Computing with the IBM Quantum Experience with the Quantum Information Software Toolkit (QISKit),» Slides PDF (Jan 2018).

Sobre las técnicas de optimización de programas, necesarias para reducir la tasa de error, te recomiendo Gerhard W. Dueck, Anirban Pathak, …, Anindita Banerjee, «Optimization of Circuits for IBM’s five-qubit Quantum Computers,» arXiv:1810.00129 [cs.ET], y Alwin Zulehner, Alexandru Paler, Robert Wille, «An Efficient Methodology for Mapping Quantum Circuits to the IBM QX Architectures,» arXiv:1712.04722 [quant-ph]. Por supuesto, hay muchas otras fuentes en la web (y artículos en arXiv).

El origen de esta entrada es la charla “Presente y futuro de los ordenadores cuánticos”, que he impartido en el Instituto de Educación Secundaria “Gregorio Prieto” de Valdepeñas (Ciudad Real, España), el pasado 26 de octubre. Organizada por Quixote Innovation, mi objetivo ha sido incentivar a algunos alumnos (en el abarrotado salón de actos había unos 400) a profundizar en la computación cuántica gracias a la experiencia cuántica de IBM. Me consta que al menos uno de ellos aceptó el reto. Estoy seguro que a otros también les picó la curiosidad. Por cierto, por la tarde impartí una charla dirigida a adultos en Bodegas Navarro López, centrada en el futuro del criptoanálisis cuántico mediante al algoritmo de Shor. Recomiendo leer «Ordenadores cuánticos…Un futuro por decidir,» Jaraiz.net, y María Luisa Villafranca, «Conferencia “Presente y futuro de los ordenadores cuánticos” en Valdepeñas,» ValdeREC, 26 Oct 2018.

[PS 28 Mar 2019] Te recomiendo el tutorial de programación sobre Qiskit de IBM de Daniel Koch, Laura Wessing, Paul M. Alsing, «Introduction to Coding Quantum Algorithms: A Tutorial Series Using Qiskit,» arXiv:1903.04359 [quant-ph], seguro que lo disfrutarán todos los interesados en aprender a programar ordenadores cuánticos de IBM. [/PS]

Lo primero que tienes que saber es que estos ordenadores de IBM QX se programan mediante circuitos de puertas lógicas cuánticas. Así que lo mejor es empezar aprendiendo cómo se diseñan circuitos con puertas lógicas (convencionales). En esta figura tienes la puerta AND (Y lógico) que realiza el producto de dos bits (C=A · B). Las puertas lógicas cuánticas actúan sobre cúbits y siempre son reversibles (la salida siempre permite reconstruir la entrada), luego su número de cúbits de entrada coincide con el de salida (recuerda que en física cuántica la información no se puede destruir durante la evolución unitaria, solo se destruye en el proceso de medida). Las puertas lógicas (convencionales) suelen ser irreversibles, destruyendo información (la salida no permite reconstruir de forma única la entrada). Por ejemplo, en la puerta AND de la figura hay tres entradas que conducen a la misma salida, luego realiza una operación irreversible.

Las funciones lógicas se especifican mediante tablas de verdad entre los bits de entrada y de salida. Esta figura muestra el circuito lógico que realiza la suma de tres bits, (c[1]c[0])2=q[0]+q[1]+q[2]; por ejemplo, 0+1+1=2=(10)2, y 1+1+1=3=(11)2. No es necesario saber construir circuitos como estos para programar un ordenador cuántico de IBM QX, pero creo que es conveniente para hacerse con la filosofía de programación.

Este circuito cuántico implementa en un ordenador IBM QX de 5 cúbits la operación de suma de tres cúbits, (q[4]q[3])2=q[0]+q[1]+q[2]; por supuesto, si los cúbits de entrada se encuentran en un estado de superposición cuántica el resultado estará en una superposición cuántica y tras la medida se obtendrán diferentes resultados (bit c en la figura) según las probabilidades de cada uno. Lo más interesenta de esta figura es observar que la complejidad del circuito cuántico (que usa dos puertas de Toffoli, tres C-NOT y dos operaciones de medida), es similar al circuito lógico convencional.

Esta figura muestra la tabla de verdad y el circuito lógico para multiplicar dos números de dos bits,  (c[3]c[2]c[1]c[0])2 = (a[1]a[0])2 · (b[1]b[0])2. Abajo se muestra el circuito cuántico para un ordenador IBM QX que realiza la misma operación con 10 cúbits, (q[9]q[8]q[6]q[4])2 = (q[1]q[0])2 · (q[3]q[2])2. Los circuitos para otras operaciones aritméticas son similares, aunque con mayor número de puertas; por ejemplo, para la resta primero se complemento a dos el segundo operando y luego se aplica la suma, o para la división se usan tres iteraciones del método de Newton.

Un bit cuántico (cúbit, del inglés qubit) es un sistema físico cuántico con dos estados, que llamaremos |0> y |1>. El cúbit puede estar en un estado de superposición de ambos estados, siendo sus amplitudes de probabilidad números complejos tales que sus cuadrados suman la unidad. El «poder cuántico» de los cúbits tiene su origen en que las amplitudes de probabilidad se comportan como si fueran «probabilidades negativas», permitiendo la interferencia destructiva entre ambos estados del cúbit. En un ordenador (clásico) no determinista, o probabilístico, se usan bit probabilísticos (pbits o probits) en los que los dos estados posibles están multiplicados por números reales que se comportan como probabilidades (luego siempre son positivos entre cero y uno).

Las operaciones lógicas cuánticas se pueden representar como matrices unitarias que actúan sobre las amplitudes de probabilidad de los cúbits. Las puertas unarias, que actúan sobre un cúbit, se representan por matrices 2×2 que actúan sobre las dos amplitudes de probabilidades (números complejos) que describen el cúbit. En esta figura se muestran las cuatro matrices de Pauli, que en el editor de IBM QX se representan mediante los operadores id, X, Y, y Z. Como puedes la puerta lógica NO (NOT) corresponde a X; por eso, en los circuitos de más arriba los unos en la entrada se especifican con dicha puerta (X de color verde), correspondiendo los ceros a no usarla.

Las puertas lógicas cuánticas aplicadas a un cúbit devuelven un estado de superposición. Esta figura muestra la puerta de Hadamard que permite obtener un estado de tipo Bell (transformar un cúbit sin superposición en una superposición equiprobable). También se obtienen superposiciones aplicando una rotación de fase a uno de los estados del cúbit, como la puerta T de esta figura. Se llama conjunto universal de puertas al que permite escribir todos los circuitos cuánticos posibles; por ejemplo, CNOT, H y T constituyen un conjunto universal de puertas cuánticas. El editor de IBM QX además de la puerta H, también ofrece la puerta S y su inversa S (recuerda que para la inversa de una matriz unitaria es su traspuesta conjugada), sus raíces cuadradas T=√S, y T, y una rotación de fase de puerta genérica llamada U1, que requiere especificar un número (ángulo de rotación).

Las puertas lógicas cuánticas binarias actúan sobre dos cúbits, que están especificados por 4 amplitudes de probabilidad complejas, luego se representan por una matriz 4×4 unitaria. La puerta más usada es C-NOT (no-controlado); esta figura muestra su operación. La versión clásica corresponde a una puerta XOR (o-exclusivo) aplicada al bit controlado, es decir, invierte el valor de B solo si A=1, dejándolo inalterado si A=0. El editor de IBM QX ofrece la puerta C-NOT con el símbolo ⊕ (que conectará dos cúbits) y una puerta genérica U2, que requiere especificar dos números (dos ángulos de rotación).

Para muchos algoritmos (circuitos) cuánticos es muy conveniente disponer de puertas lógicas cuánticas ternarias. La más importante es la puerta de Toffoli, una especie de puerta NOT doblemente controlada, solo se invierte el primer bit (A) cuando los otros dos están activos (B=C=1), en cualquier otro caso la salida copia a la entrada. El editor de IBM QX además de la puerta de Toffoli ofrece una puerta genérica U3, que requiere especificar tres números (tres ángulos de rotación). La puerta de Toffoli, ella sola, constituye un conjunto universal de puertas (¿cómo simularías las puertas CNOT, H y T usando puertas de Toffoli?).

Un punto importante a tener en cuenta es que los ordenadores cuánticos IBM QX no tienen una topología de conexión completa para los cúbits, todos con todos. Las puertas C-NOT solo aplican físicamente en una dirección concreta; por ejemplo, en IBM QX2 el cúbit q[0] solo puede ser el control de los cúbits q[1] y q[2], o en IBM QX5 el cúbit q[1] solo de los cúbits q[0] o q[2]. Esta figura muestra la topología física para la aplicación de las puertas C-NOT. Por fortuna, una puerta C-NOT genérica se puede simular usando varias puertas C-NOT con esta topología particular. Si en el editor de IBM QX escribes un circuito que incumple con esta topología, internamente se sustituye la puerta indicada por el circuito equivalente («invisible» en la figura). Esto tiene un problema, pues falsea el número de puertas del circuito (en la figura se observan menos puertas de las que en realidad se usan). Por ello se recomiendo que, tras comprobar que un circuito funciona en el simulador, se optimice dicho circuito para eliminar las puertas «invisibles»).

Usando el ordenador de IBM QX puedes implementar todos los algoritmos cuánticos que vienen en los libros de texto (como el algoritmo de búsqueda de Grover para tres cúbits mostrado en esta figura). Un punto importante que debes tener en cuenta es que si un circuito funciona el 100% de las veces en el simulador (para cinco cúbits), en el ordenador cuántico funcionará bien un porcentaje menor de veces (superar el 60% es poco habitual). Cuanto más puertas lógicas cuánticas tengan el circuito (tanto las visibles en el circuito de la figura como las «invisibles» debidas a las restricciones de la topología de conexión física) más error se producirá en el resultado (la decoherencia cuántica es imposible de evitar). Así no te sorprendas si un circuito que en el simulador funciona al 100% en la implementación física no funciona nunca (0%); en dicho caso es imprescindible una optimización del circuito.

Hasta donde me consta no hay ningún libro de computación cuántica que enseñe a programar los ordenadores IBM QX. Aún así, muchos libros muestran los circuitos que implementan muchos algoritmos, lo que su transcripción al lenguaje de un IBM QX no es difícil, en principio. Además, hay muchos tutoriales en la web; por ello no creo que nadie con suficiente interés encuentre problemas insalvables.

Si hay simuladores de los ordenadores con 5 cúbits, ¿qué interés tiene usar un ordenador de verdad? La razón es que en el simulador un programa bien construido siempre ofrece la respuesta correcta el 100% de las veces. Sin embargo, en un ordenador físico el efecto de la decoherencia (que crece conforme aumenta el número de puertas lógicas) penaliza este porcentaje. Por ejemplo, en la figura tenemos el algoritmo de Grover en el ordenador IBM QX4 (5 cúbits) en 2+13+7+2 = 24 pasos. En el simulador funciona siempre, pero en la máquina real solo tiene éxito el 65% de las veces. En muchos algoritmos (como la implementación del algoritmo de Shor para factorizar el número 15 = 5 × 3, o la resolución de un sistema lineal de 2 × 2) la tasa de éxito es mucho peor, siendo inferior al 50%, o incluso llegando a ofrecer respuestas incorrectas en todos los casos.

Aprender que la realidad difiere de la simulación es la gran lección que uno debe aprender en computación cuántica. Por ello, optimizar los circuitos con mucha imaginación y dosis de inventiva es clave en el éxito. Todo un reto para las mentes de los más jóvenes que se atrevan a adentrarse en el mundo de la computación cuántica. ¿Aceptas el reto de IBM QX?



6 Comentarios

  1. Dioooossssss, ¡¡concédeme la loteria primitiva para poder dedicarme a aprender esto tambíén!!! Cuantas cosas chulísimas, y qué poco tiempo y capacidad cerebral…

    1. Pedro, el pdf 1804.03719 es muy interesante. Bájatelo e intenta dedicarle algunos fines de semana. Luego, allá por el 2019, si sigues con dudas: podemos aclararlas por email.

  2. ¡ Impresionante ! Al final es muy probable que lleguemos a ver computadores cuánticos reales que logren la ansiada «supremacía cuántica». Además de las posibles aplicaciones tecnológicas (simulación de sistemas cuánticos, criptografía, machine learning, etc) me gustaría destacar otra increíble capacidad de los computadores cuánticos: ¡Estas máquinas llevarán el extraño mundo de las partículas fundamentales hasta nuestros hogares! Hasta ahora conceptos como el spin o la función de onda cuántica no eran más que cosas abstractas sin ninguna relación con nuestro mundo macroscópico, sin embargo ahora, los CC utilizan estos «extraños espacios Matemáticos complejos» ¡para realizar operaciones prácticas reales! Me gustaría tratar de describir el verdadero origen del poder de los CC: un qbit está implementado por un átomo o un estado excitado que está descrito por varias «magnitudes Físicas fundamentales»: energía, momento lineal, momento angular, etc. Una de esas magnitudes fundamentales relacionada con el momento angular es EL SPIN. El spin (o los dos posibles niveles de energía en el caso de estados ligados) es la clave del poder de los CC. Pero ¿que demonios es el spin? Explicado a «grosso modo» las partículas fundamentales de las que está hecha toda la materia que existe en el Universo (los fermiones) tienen una especie de «nuevo grado de libertad» ,es decir, además de los grados de libertad «usuales»(x,y,z,t) tienen un nuevo grado de libertad interno que está descrito por un NÚMERO COMPLEJO. Este número complejo se puede representar de forma heurística como un punto en una esfera: la esfera de Bloch. La clave de los CC (en el caso del algoritmo de Grover por ejemplo) es que MIENTRAS NO MIDAMOS EL ESTADO podemos hacer interferir estas «esferas de Bloch» (números complejos que representan la amplitud de la probabilidad cuántica) sumando o restando (interferencia constructiva-destructiva) de forma que podemos «movernos» por distintos puntos de la esfera (operaciones unitarias o algoritmos cuánticos). De esta forma podemos ¡aumentar o disminuir la amplitud de probabilidad del estado que queremos medir! Es decir, podemos «manipular» el sistema cuántico que permanece en superposición de 2 estados de forma que al medir obtengamos, por ejemplo, un 90% o un 99% de probabilidades de obtener el resultado buscado. Así, por ejemplo, el algoritmo de Grover permite buscar un «bit» de información (spin up-spin down o estado 1-estado 2) en una red de 2expN qbits en solo raiz(N) intentos en lugar de los N que haría falta en un ordenador clásico. Es curioso que, en teoría, un CC de 1000 qbits podría buscar en una base de datos de 2exp1000 estados (10exp300, un número mayor que el de partículas que hay en el Universo) y encontrar el bit de información en una media de solo raiz(1000)=31,62 operaciones de búsqueda. La clave de esto, que es a donde yo quería llegar, es que los CC usan la «únidad de información cuántica fundamental de la naturaleza», una unidad de información sin analogía macroscópica y que «cuenta» el número de estados o grados de libertad de un sistema cuántico. Es un fascinante vínculo entre teoría de la información- física cuántica y física del estado sólido.
    Para terminar me gustaría señalar que un agujero negro representa el límite fundamental de «compresión» de la información del Universo (entropía de Bekenstein-Hawking) : no es posible comprimir más información en un determinado volumen de espacio-tiempo, si lo intentas el espacio-tiempo «colapsa» 🙂 Sin duda, la información cuántica juega un papel fundamental en la propia naturaleza del espacio-tiempo y nosotros, pobres mortales, vamos a disponer de la tecnología para utilizar está información en nuestro beneficio a través de los CC.

  3. Buena disertación planck. Sólo un detalle: en el ejemplo que pones del algoritmo de Grover, el numero de intentos seria raiz (2 exp 1000), dado que es 2 exp 1000 el numero de elementos sobre los que tienes que buscar el bit en cuestión.

Deja un comentario