lunes, 20 de diciembre de 2021

Computadoras Cuánticas: Por qué son importantes


Una de las más importantes aplicaciones de la mecánica cuántica son las computadoras cuánticas. Si bien todos conocemos y disfrutamos de las aplicaciones de las computadoras clásicas, desde los teléfonos inteligentes y las computadoras personales hasta las supercomputadoras en los laboratorios de investigación científica, una pregunta que uno se hace cuando lee noticias sobre este tema es: Cuál es la diferencia entre estas nuevas computadoras cuánticas (basadas en la mecánica cuántica) y las actuales computadoras clásicas (basadas en la física clásica). Aunque quizás más interesante aún es la pregunta de por qué las computadoras cuánticas son importantes, o por qué las grandes compañías de la alta tecnología, apoyadas por Wall Street y los gobiernos de todo el mundo, están tan interesados e invierten tanto dinero en ellas.

Claramente una razón para este interés es la promesa de que las Computadoras Cuánticas (Quantum Computers o QC, en inglés) pronto podrán romper los algoritmos de criptografía pública que actualmente se utilizan para garantizar la seguridad en la Internet, incluyendo transacciones financieras, comunicaciones encriptadas, aplicaciones militares, etc. Este es un punto que atrae la atención de los gobiernos y otros tantos "actores" globales.

También de mucho interés son las posibles aplicaciones en la investigación científica, en modelación de reacciones químicas, en medicina, en Inteligencia Artificial, en la optimización de inversiones financieras en la bolsa de valores (incluyendo bitcoins y criptomonedas), en la distribución de claves cuánticas (Quantum Key Distribution o QKD, en inglés) que por cierto ya se está utilizando en comunicaciones satelitales encriptadas, y otras tantas aplicaciones menos conocidas, pero no menos importantes.

Entonces, qué hacer para rápidamente ponerse al día y al menos entender las tantas noticias que leemos a diario sobre nuevos descubrimientos y reportes de 'supremacía cuántica' de múltiples grupos que en todo el mundo están trabajando arduamente en esto. O entender por qué el Congreso de los Estados Unidos en el 2018 aprobó la ley HR6227, también conocida como National Quantum Initiative Act, para impulsar la computación cuántica y coordinar los esfuerzos de las principales agencias científicas gubernamentales que incluyen: National Institute of Standards and Technology (NIST), National Science Foundation (NSF), Department of Energy (DOE), y otras.

IBM Q System One: La primera QC comercial

Precisamente para tratar de responder algunas de estas preguntas, y como introducción al tema, hemos querido escribir estas breves notas. Pero queremos hacerlo de una forma diferente a como lo hacen la mayoría de los artículos que prometen "demistificar" la computación cuántica, para lo cual hace falta ir un poco más allá del cliché de que "un qubit es un bit que puede estar en 0 y 1 al mismo tiempo".

Por tanto aquí no vamos a hablar de la mecánica cuántica con todas sus extrañezas que fundamenta todo esto (lo cual ya hemos hecho en otras notas en este blog), incluyendo el Principio de Superposición que explica el comportamiento del bit cuántico (Qubit, o Cúbit en español) que ya discutimos en otras notas. Tampoco vamos a hablar del "Gato de Schrödinger", ni del "Principio de Incertidumbre de Heisenberg", ni de por qué el "Entanglement" (Entrelazamiento, en español) es un fenómeno físico real a pesar que Albert Einstein, en su característico tono ingenioso aunque peyorativo sobre todo lo que era mecánica cuántica, lo llamó "spooky action at a distance" (¿espeluznante acción a distancia?).

En lugar de eso, lo que vamos a hacer aquí es hablar un poco de las implementaciones prácticas, los algoritmos cuánticos y cómo se programan estas computadoras cuánticas, incluyendo también los retos que enfrentan actualmente los investigadores.

Pensamos que este enfoque puede ser más útil para los ingenieros y programadores que están comenzando sus carreras y que posiblemente en un futuro cercano tendrán que profundizar en este tema; lo cual por cierto no requiere que uno tenga un Ph.D. en física cuántica ni tampoco uno tiene que convertirse en un experto en física-matemática.

...


Si este tema te resulta demasiado "físico" y te deja "botado" en algunos puntos, entonces quizás prefieras ir directamente a algunas de las notas en el siguiente índice improvisado. Por ejemplo, si eres programador, entonces te recomendamos revisar la sección de Lenguajes de Programación con el ejemplo "Hello Many Worlds". Si eres ingeniero, quizás quieras leer sobre las Compuertas Lógicas y los Circuitos Cuánticos. Si te gusta la matemática y la programación, entonces revisa los Algoritmos, incluyendo el importante Algoritmo de Shor que fue el momento 'eureka' de las computadoras cuánticas. Si te gusta la historia, puedes pasar directamente a la sección sobre la Linea de Tiempo de la Computación Cuántica de los 40 años de investigación, desde que Feynman propuso el concepto de Ventaja Cuántica hasta ahora. Y si te interesa la política global, entonces definitivamente debes conocer sobre la Supremacía Cuántica y sobre las principales empresas y gobiernos que están apoyando las investigaciones en computación cuántica.


  1. Introducción: Bits Cuánticos versus Clásicos
  2. Qué es un Qubit: Entanglement y Medición
  3. Compuertas Lógicas
  4. Circuitos Cuánticos
  5. Algoritmos (Deutsch, Grover, Shor)
  6. Algoritmo de Shor (Problemas P versus NP o BQP)
  7. Lenguajes de Programación
  8. Decoherencia
  9. Corrección de Errores y Número de Qubits
  10. Supremacía Cuántica
  11. Implementación Física de los Qubits
    1. Trasmón (Superconductores)
    2. Quantum Dot (Punto Cuántico)
    3. Trapped Ion (Ion Atrapado)
    4. NMRQC (Resonancia Magnética Nuclear)
    5. BEC (Condensado Bose-Einstein)
  12. Notación Braket y Esfera de Bloch
  13. Nota: Quantum Annealing
  14. Las Principales Empresas de QC
  15. Linea de Tiempo de la Computación Cuántica
  16. Conclusión

...


Nota: Una cuestión que no vamos a explicar aquí, al menos por ahora, es el fundamento matemático de todo esto, ya que para eso hay muy buenas fuentes educativas y hasta academias online accesibles a todos. No obstante, si alguien quiere conocer sobre los pre-requisitos matemáticos de la computación cuántica, le recomendamos familiarizarse con los siguientes temas:

  • Algebra Lineal: Vectores y Matrices; operadores y transformaciones entre ellos.
  • Probabilidades: Naturaleza estadística, no determinista, de los estados cuánticos.
  • Espacio de Hilbert: Espacio Euclidiano en N dimensiones con números complejos.
  • Teoría de Grupos: Grupos de Simetría en la Esfera de Bloch.

Dicho esto, comencemos con el tema que nos ocupa.


Introducción: Bits Cuánticos versus Clásicos

Para refrescar la memoria, primero hagamos un breve resumen sobre como se implementan los bits clásicos. En las computadoras clásicas se utilizan circuitos electrónicos donde los dos estados lógicos del bit (0 o 1) se implementan con transistores que pueden estar en estado de 'corte' o 'saturación'; que a su vez corresponden a dos niveles de voltaje de salida. Por ejemplo, 0V (bit=0) o 5V (bit=1).

Además existen circuitos integrados que permiten realizar operaciones lógicas (lógica booleana) entre estos bits. Por ejemplo los circuitos TTL (transistor-transistor-logic) implementan compuertas lógicas de tipo: NOT, AND, NAND, OR, NOR, XOR, etc. con solo unos pocos transistores. Estas compuertas básicas permiten construir circuitos aritméticos más complejos que realizan operaciones de cálculo entre números enteros o de punto flotante (+ - * /), e incluso otras funciones matemáticas más complejas como la Transformada de Fourier en el procesamiento de señales, etc.

Compuertas Lógicas con Circuitos TTL


Un poco más tarde en la historia de la electrónica de estado sólido se desarrollaron circuitos integrados con un gran número de transistores, utilizando la tecnología FET-MOSFET (Field Effect Transistor) y CMOS (Complementary Metal Oxide Semiconductor) que es más eficiente por su baja potencia, lo cual permitió la fabricación de microprocesadores, empezando con el Intel 4004 en 1971; un chip CPU de 4 bits con 2,300 transistores. Con el advenimiento de los microprocesadores, los cuales incluyen unidades aritméticas, lógicas y de control en un solo circuito integrado, los dispositivos TTL pasaron a segundo plano, pero de todas formas se continuaron utilizando como interfaces y controladores de bus en el motherboard de las computadoras personales, etc.

Este es el fundamento físico de las poderosas CPU (Central Processing Unit) y GPU (Graphics Processing Unit) que existen hoy en día y que contienen millones de transistores, con múltiples 'cores' que permiten 'multithreading', las cuales permiten ejecutar sofisticados programas en 'código de máquina', de tipo RISC (Reduced Instruction Set Computer) o CISC (Complex Instruction Set Computer), y que incluso pueden implementar instrucciones especiales del tipo SIMD (Single Instruction, Multiple Data) para poder procesar grandes volúmenes de data con paralelismo. A partir de ahí el software, que va desde el BIOS (Basic Input/Output System) y el Sistema Operativo (OS), hasta las Aplicaciones (ya sean stand-alone o en redes, con o sin Interfaz de Usuario UI), se ocupa de todo lo demás.

Por oto lado, un Qubit o Cúbit en español (bit cuántico) es fundamentalmente diferente a un bit clásico, como explicaremos en las siguientes secciones. La primera diferencia es que para implementar físicamente un Qubit se requiere tener un sistema de objetos que se rigen por las leyes de la mecánica cuántica, que pueden ser partículas elementales o compuestas, e incluso pueden ser átomos o moléculas, y hasta cuasi-partículas y estados de materia condensada como el Condensado Bose-Einstein que explicaremos más adelante, siempre y cuando puedan existir en un estado llamado "Entanglement" en inglés (Entrelazamiento, en español) tal que cuando se realiza una "Medición" el resultado puede dar dos valores distintos -- ver a continuación.


Entra el Qubit

Históricamente uno de los primeros experimentos donde se observó un sistema cuántico de dos estados fue el experimento de Stern y Gerlach en 1922, donde un haz de átomos de plata eléctricamente neutro atraviesa un campo magnético no homogéneo y se divide en dos, cada uno de los cuales corresponde a un posible valor de espín (spin, en inglés) del electrón más externo del átomo de plata. Y precisamente esta propiedad de ciertos atributos cuánticos de tener dos posibles estados, como el caso del spin del electrón o la polarización de los fotones de la luz, motivó a algunos investigadores a empezar a pensar sobre los estados cuánticos en términos de "bits" de computación que pueden tener dos valores, ya sea "1" y "0", o "arriba" y "abajo", etc.

Experimento de Stern-Gerlach

Como ya se ha mencionado, para poder implementar un Qubit (bit cuántico) el único requerimiento es tener un sistema de objetos físicos que se rigen por las leyes de la mecánica cuántica en un estado llamado "Entanglement" (Entrelazamiento, en español) de forma tal que cuando se realiza la "Medición" el resultado pueder dar dos valores distintos. En la práctica estos sistemas cuánticos pueden ser partículas elementales (electrones y fotones) o compuestas (núcleos atómicos), e incluso pueden ser moléculas o estados de materia condensada (sólidos, líquidos, gases, etc.) y hasta ciertas cuasi-partículas que se pueden utilizar para lograr tal efecto -- ver Implementación Física de los Qubits más adelante.

El estado de Entanglement se puede imaginar como un estado de 'coherencia' entre las partículas del sistema, de tal forma que el estado de una partícula influye en el estado de la otra, pudiendo ocurrir un fenómeno de Interferencia entre los estados, y como consecuencia de esa Interferencia, algunos estados se reforzarán (los que se espera den la solución correcta al problema planteado) mientras que otros se cancelarán (los que no son solución). Otra consecuencia del estado de Entanglement es que que no podemos conocer la solución al problema planteado hasta que no se realice una operación de Medición.

Por eso se dice que durante el Entanglement ocurre la Superposición de los estados, es decir, que los estados cuánticos puros se superponen, y solo podemos conocer la Probabilidad del estado superpuesto, o sea, la probabilidad de que el sistema esté en una combinación lineal de |0⟩ y |1⟩. Esa es la diferencia fundamental entre los qubits cuánticos y los bits clásicos. Y por eso también para los qubits se hace necesario utilizar una notación diferente a los bits clásicos -- ver nota al final sobre Notación bra-ket y Esfera de Bloch para representar los qubits.

Nótese que solo después de realizar la medición es que podemos saber el estado final que correponderá a un bit clásico con valor 0 o 1. A partir de ahí la computadora cuántica se comportaría como una computadoras clásica. Además es importante mencionar que cuando se realiza la medición el Entanglement se pierde, a lo cual se le llama 'decoherencia'.

Google QC (Sycamore) 53-Qubits

En cuanto a las semejanzas y diferencias entre computación cuántica y clásica, vale notar que los algoritmos de computación cuántica son probabilísticos por naturaleza. Esto significa que los algoritmos cuánticos nos dan la respuesta correcta a un problema con alta probabilidad. Y dado que la probabilidad de fallo puede ser disminuida repitiendo el algoritmo, o aplicando el método clásico de 'prueba y error' a posteriori, entre el subconjunto de las soluciones más probables, entonces una combinación híbrida de procesamiento cuántico-clásico puede ser la solución más eficiente para resolver un problema específico.

IBM QC (Módulo Fraunhofer) 20-Qubits

Además las computadoras cuánticas, aunque tengan un procesador central puramente cuántico (Quantum Processing Unit o QPU), siempre van a necesitar períféricos clásicos para hacer operaciones de Entrada/Salida (Input/Output o I/O).


Compuertas Lógicas

Como ya se explicó anteriormente, para implementar cualquier clase de computadora, clásica o cuántica, se necesitan 'compuertas lógicas'. En el caso de las computadoras clásicas las compuertas son de tipo: NOT, AND, NAND, OR, NOR, XOR, etc. En el caso de las computadoras cuánticas las compuertas pueden realizar otras operaciones básicas, y se les dan los nombres de sus creadores, o de los que demostraron el teorema en el cual se basa su operación, o según la función que realizan.

En la computación cuántica las compuertas más importantes son: CNOT, Pauli (P) en tres variantes (X,Y,Z), Hadamard (H), y otras. Estas compuertas se representan con matrices hermíticas 2x2 o matrices de permutación 4x4, que a su vez actúan como transformaciones que se aplican sobre un vector Qubit y dan un resultado que se puede pasar a otra compuerta, o que se puede medir como resultado final. Veamos un par de ejemplos:

CNOT: La compuerta C-NOT o CNOT (NOT Controlada) es una puerta lógica básica que es un componente esencial en el diseño del resto de las compuertas en la construcción de una computadora cuántica. Se puede utilizar para producir Entanglement (enlazar y desenlazar los Estados de Bell). Los Estados de Bell (o pares EPR) son otro nombre para referirse a los estados cuánticos de dos Qubits entrelazados. Además cualquier otro circuito cuántico se puede simular con un grado arbitrario de precisión utilizando una combinación de compuertas CNOT y rotaciones de un Qubit en la Esfera de Bloch.

La acción de la compuerta CNOT es invertir el segundo qubit (el qubit objetivo) si y solo si el primer qubit (el qubit de control) es |1⟩. El equivalente clásico de la CNOT sería una compuerta XOR, según se muestra en la siguiente tabla.

BeforeAfter
Control Target Control Target
|0\rangle |0\rangle |0\rangle |0\rangle
|0\rangle |1\rangle |0\rangle |1\rangle
|1\rangle |0\rangle |1\rangle |1\rangle
|1\rangle |1\rangle |1\rangle |0\rangle

Pauli (P) en (X,Y,Z): Es equivalente a una compuerta NOT clásica. Se representa por 3 matrices según la dirección del vector donde se aplica en la Esfera de Bloch: X,Y ,Z.



Hadamard (H): Posiblemente la compuerta cuántica más utilizada. La mayoría de los algoritmos cuánticos comienzan con Hadamard. Matemáticamente Hadamard (H) es equivalente a una Transformada de Fourier para un qubit:

          


Nótese que el factor (1/√2) aparece en la matemática de la Transformada de Fourier Discreta (DFT) y su Inversa (IDFT) normalizada con periodicidad N=2. Como corolario, el cuadrado de H (H multiplicada por sí misma) es igual a la matrix Identidad (I):

           H2 = I

Gráficamente, en la Esfera de Bloch, la operación de Hadamard es una rotación de 90 grados alrededor del eje Y, seguida de una rotación de 180 grados alrededor del eje X.

Nótese además que cuando la compuerta Hadamard actúa sobre un qubit puro, su efecto es el entanglement del quibit, es decir, ponerlo en superposición con el qubit opuesto, como se muestra en el siguiente gráfico.


Phase shift gates: Las puertas de 'desplazamiento de fase' son una familia que operan sobre un único Qubit, dejando el estado base |0⟩ intacto y asignan el |1⟩ aplicando la Función Exponencial de Euler: e⋅|1⟩ . Entre las compuertas de 'desplazamiento de fase' existe una muy utilizada, llamata T Gate, donde el desplazamiento de fase es igual a π.

La probabilidad de medir un |0⟩ o un |1⟩ no cambia después de aplicar esta compuerta, sin embargo sí se modifican las fases del estado cuántico, es decir, los ángulos del vector del estado en la Esfera de Bloch. La fase de los qubits es un factor importante porque, en dependencia de sus fases relativas, los qubits pueden reforzarse o destuirse cuando se superponen; y dicho efecto se puede utilizar en los algoritmos de corrección de errores, permitiendo un alto nivel de 'tolerancia a fallas' en la computadora cuántica.

Ising: Se llaman compuertas de acoplamiento (coupling gates) e incluyen la operación de SWAP (intercambio) como un caso particular. Las compuertas Ising se implementan en un tipo de computadora llamada "trapped ion quantum computer" (computadora de iones atrapados).

IonQ Trapped Ion QC (22-Qubit)


Circuitos Cuánticos

Los circuitos cuánticos son diagramas que representan una conexión entre varias compuertas cuánticas, o 'puertas', que permiten implementar (correr) un algoritmo cuántico. Como ejemplo, las siguientes imágenes representan los componentes básicos de un circuito cuántico, en relación a las compuertas que se explicaron en el epígrafe anterior. Nótese como cualquier circuito cuántico completo deber incluir al menos una componente de medición, que sería la salida del circuito, además de las otras componentes que se definieron anteriormente: Hadamard (H), CNOT, Pauli (P) en (X,Y,Z), etc.

Circuito de Medición


Circuitos Básicos



Circuitos Adicionales

El siguiente es un ejemplo sencillo de un circuito cuántico de 1 qubit aplicando compuertas Pauli (P) en X y Z, y Hadamard (H). Nótese como el paso de medición al final no es reversible y su salida nos da la probabilidad de que el estado del quibit original fuera 0 o 1; la cual es igual a 1/2 dado que ambos valores son equiprobables.


La velocidad de los circuitos cuánticos, junto con el número de qubits que el circuito soporta (la Escala del circuito), es una métrica importante que define su rendimiento. En el caso de las QC (Quantum Computers) la velocidad se mide en CLOPS (Circuit Layer Operations Per Second) que representa el número de circuitos que la QPC (Quantum Processing Unit) puede ejecutar por segundo. Por ejemplo, IBM ha logrado 1,419 CLOPS con una QC de 5 qubits, aunque con la System One de 65 qubits hasta ahora solo han logrado 763 CLOPS. Y ese punto de referencia es importante para evaluar cualquier computadora cuántica.


Algoritmos

Los algoritmos son la razón de ser de las computadoras cuánticas. Cada algoritmo cuántico se diseña para resolver un problema específico, utilizando los circuitos y las compuertas mencionadas anteriormente.

La razón por la que los algoritmos cuánticos resultan ser tan eficientes, comparados con los clásicos, es que gracias al fenómeno de la superposición de los qubits entrelazados (coherentes) tal parece que los algoritmos cuánticos de manera natural procesan 'en paralelo' lo que los algoritmos clásicos tendrían que procesar 'en serie'. Otra forma de verlo es considerando que las computadoras cuánticas pueden estar en una enorme cantidad de estados al mismo tiempo (2N para N qubits), mientras que las computadoras clásicas solo pueden estar en un estado en un instante dado.

El gato de Schrodinger con su famosa ecuación


Por ejemplo, supongamos que uno tiene un algoritmo clásico que necesita procesar una variable mil veces para poder calcular el resultado. Esta operación se podría implementar con un lazo secuencial hasta que se cumpla cierta condición lógica, como el caso siguiente:

for ( i = 0; i < 1000; i++ )
{
    if ( procesa_un_valor_cada_vez (i) )
        return i;
}
return null;

Mientras que en una computadora cuántica el algoritmo equivalente incluiría los siguientes pasos; utilizando la simpática metáfora del gato de Schrodinger:

1) Entrelaza los qubits y haz el cálculo (pon el gato en la caja y ciérrala)
2) Realiza la medición; desentrelaza los qubits (abre la caja para ver el resultado)
3) Reporta el resultado observado (si el gato está vivo o muerto)

Este simple algoritmo se podría escribir de la siguiente forma; en pseudo-código:

calculo = procesa_todos_los_valores_posibles_a_la_vez (1,1000);
respuesta = medicion ( calculo );
return respuesta;


Ejemplos de Algoritmos Cuánticos (Criptografía)

No todos los algoritmos clásicos pueden convertirse fácilmente en algoritmos cuánticos, pero algunos sí pueden, y esos casos pueden ser sorprendentes y extraordinarios en sus resultados. Veamos algunos de los ejemplos más conocidos:

Deutsch: Caja Negra. El primero. Este algoritmo no tiene muchas aplicaciones prácticas pero es un buen ejemplo que ilustra como las computadoras cuánticas son mejores que las clásicas para resolver ciertos problemas. El objetivo del algoritmo es encontrar la función de una Caja Negra (también llamada 'oracle' o 'black box', en inglés) a partir de cuatro posibilidades de funciones digitales, donde cada función tiene entradas que pueden tener valores 0 o 1, y salidas que pueden ser: a) Constantes (valores siempre 0 o 1 excluyentes); o b) Balanceadas (valores 0 y 1 equiprobables). El algoritmo de Deutsch se implementa utilizando las compuertas Hadamard (H) mencionadas anteriormente.

Grover: Búsqueda. El eficiente. Para explicar la ventaja de este algoritmo sobre los algoritmos clásicos debemos considerar un conjunto no ordenado de N elementos. En el peor de los casos una computadora clásica necesitará N búsquedas para encontrar un elemento, aunque en realidad en promedio serían N/2 búsquedas. Sin embargo una computadora cuántica utilizando el algoritmo de Grover solo necesitaría √N̅, lo cual es una sustancial mejora sobre los métodos clásicos. El algoritmo Grover se puede aplicar en criptografía de funciones hash (SHA) y en la búsqueda de la clave (o llave, del inglés "key") en algoritmos de criptografía simétrica (AES).

Shor: Cryptografía. El temido. El algoritmo de Shor es devastador para los algoritmos de criptografía pública (criptografía asimétrica) que existen en la actualidad (RSA, Elliptic-curve cryptography o ECC y Diffie-Hellman) que se basan en tener dos claves que funcionan juntas para poder descifrar los mensajes: una clave pública (public key) que se comparte y otra clave privada (private key) que se mantiene secreta. De esta forma conocer la clave privada permite descrifrar un mensaje que ha sido cifrado con la clave pública, pero lo opuesto no es posible; es decir, no se puede descifrar un mensaje teniendo solo la clave pública. En otras palabras, cualquiera puede cifrar un mensaje con la clave pública, pero solo el que tiene la clave privada puede descifrarlo.

En la práctica estas claves o llaves se construyen a partir de parejas de números primos grandes; como por ejemplo las claves de los certificados de 2048 bits (RSA-2048 tiene 617 dígitos decimales) que se utilizan en el algoritmo SSL/TLS que implementa el protocolo Web HTTPS. Esta clase de criptografía también se utiliza en otros algoritmos de la Internet, como el PGP para cifrar y firmar digitalmente los archivos de datos en reposo, el SSH para subir o bajar archivos de un servidor usando el protocolo sFTP, etc. Y por cierto ese también es el fundamento de la tecnología Blockchain (Cadena de Bloques) en las transacciones de Bitcoin y las criptomonedas.

La razón por la que estos algoritmos de criptografía pública son seguros es porque es muy dificil (algunos creen que es imposible) para las computadoras clásicas factorizar grandes números enteros (descomponer un número compuesto en sus factores primos) aplicando la "fuerza bruta" cuando los números son suficientemente grandes, es decir, probando todas las combinaciones posibles.

Otra forma de entender la criptografía pública es a través del principio de la "función asimétrica", que en este caso implica que es muy fácil derivar la clave pública a partir de su correspondiente clave privada, pero lo opuesto es muy difícil. Esto se debe a que, para poder encontrar la clave privada a partir de la clave pública, los algoritmos clásicos requerirían una cantidad de tiempo que crece exponencialmente con el tamaño de la entrada, lo cual se hace imposible, o al menos impráctico, cuando los números de entrada son suficientemente grandes.


Algoritmo de Shor (Problemas P vesus NP o BQP)

Generalmente se dice que el algoritmo de Shor perimite factorizar números enteros (descomponer un número compuesto en sus factores primos) en tiempo polinomial en una computadora cuántica, a diferencia de una computadora clásica en la cual se requiere un tiempo no-polinomial (exponencial); lo cual implica que el problema de factorización numérica es impráctico o imposible de resolver en una computadora clásica cuando el número es suficientemente grande. Y este hecho es muy importante en aplicaciones de criptografía, como ya se explicó anteriormente. ¿Pero qué significa esto en realidad? Veamos.

Técnicamente el problema de factorizar grandes números enteros es un problema clase NP (Nondeterministic Polynomial), lo cual significa que su complejidad no se puede resolver en tiempo polinomial utilizando una máquina de Turing determinista -- una computadora clásica es esencialmente una máquina de Turing "determinista". Es decir, que el tiempo que toma correr el algoritmo NO es una función polinomial del tamaño de la entrada, lo cual en la práctica significa que no se han podido encontrar algoritmos clásicos factibles para resolver dicho problema, y por lo cual se sospecha que simplemente no existen tales soluciones algorítmicas clásicas; aunque esa imposibilidad no se ha demostrado matemáticamente. A diferencia por ejemplo del 'Halting Problem' que es un 'problema de decisión' que ya se ha demostrado que es imposible de resolver en una Máquina de Turing.

Por otra parte, lo que sí fue demostrado por el matemático Peter Shor en 1994 es que su algortimo es clase P (Polynomial), o más bien clase BQP (bounded-error quantum polynomial) que es similar a P para computadoras cuánticas, lo cual significa que permite factorizar grandes números en "tiempo polinomial", es decir, que el tiempo del algoritmo es una función polinomial simple del número de elementos (tamaño) de la entrada; lo que en la práctica significa que el algorimo es "factible" y "rápido".

Como nota al margen, la pregunta sobre si un algoritmo es de clase P o NP es muy importante en la ciencia de la computación. De hecho, el llamado problema 'P versus NP' del Clay Mathematics Institute es considerado el problema no resuelto más importante de la informática hoy en día, por lo cual se ofrece un premio de 1 millón de dólares por su solución. El problema 'P versus NP' específicamente se refiere a la aparente asimetría que existe entre encontrar soluciones numéricas a problemas versus verificar las soluciones a dichos problemas.

Utilizando la llamada notación Big-O (Cota Superior Asintótica, en español) para describir el nivel de complejidad de los algoritmos computacionales, donde la O se lee como 'Orden' de complejidad, vemos que un algoritmo cuya complejidad sea del orden de una función exponencial del tamaño de la entrada sería un alogirtmo 'muy malo', mientras que otro que es del orden de una función polinomial, como por ejemplo el 'logaritmo de N', sería 'muy bueno'.

Notación Big-O de Complejidad (Cota Superior Asintótica)


De acuerdo con la escala Big-O, el algoritmo de Shor es del orden de O((log N)^3) y los algoritmos cuya complejidad son del orden de 'logaritmo de N', donde N es número de elementos en la entrada, se consideran 'polinomiales', ya que matemáticamente la función logaritmo natural se puede representar por una serie infinita armónica convergente, es decir, por un polinomio de infinitos elementos decrecientes.

El algortimo de Shor puede parecer un tanto complicado y molesto, pero también es genial. Matemáticamente, el algortimo de Shor resuelve el problema de encontrar "subgrupos ocultos para grupos abelianos finitos". Para lograr esto, el algoritmo se basa en la conjetura matemática de la cuasi-periodicidad de la distribución de números primos (Hipótesis de Riemann) y en la aplicación de la transformada de Fourier cuántica para encontrar el período de una función que describe la secuencia de los números. La computadora cuántica en este caso se comporta como una especie de interferómetro (basado en el fenómeno de la interferencia de los qubits, donde la solución correcta se refuerza y las otras combinaciones se cancelan) para así encontrar el período de la secuencia numérica. Al final entonces el resultado más probable se pasa a una computadora clásica donde se confirma el resultado correcto utlizando la Teoría de Números clásica.

Otra forma de verlo es considerando que la clave de la factorización es identificar números primos (números enteros divisibles solo por 1 y por sí mismos). Por ejemplo, hay veinticinco números primos entre 1 y 100, pero a medida que se sigue contando, se vuelven cada vez más escasos. Sin embargo, si esos números se ponen a lo largo de una linea recta numérica, se notará que ciertas secuencias de números se repiten periódicamente, aunque las distancias entre estas repeticiones crecen exponencialmente, lo que las hace difíciles de calcular con una computadora convencional. Entonces el algoritmo de Shor se puede entender haciendo una analogía con una red de difracción. De la misma manera que cuando la luz blanca pasa por una red de difracción y cada color de luz a la salida tiene una longitud de onda específica, el algoritmo de Shor funcionaría como una red de difracción computacional que puede clasificar los diferentes períodos de las series numéricas, considerando que cada color representaría una agrupación diferente de números. Una computadora clásica, al observar estos grupos, tendría que analizarlos uno por uno. Una computadora cuántica podría procesar todo el arcoiris a la vez.

Solo como ilustración, he aquí el circuito de "quantum gates" que implementa una de las subrutinas del algoritmo de Shor utilizando la compuerta Hadamard (H) explicada anteriormente, con una compuerta de QFT (Quantum Fourier Transform) y otras:

Subrutina cuántica del algoritmo de Shor

La 'prueba de concepto' del algoritmo de Shor se realizó por primera vez en el 2001 cuando un equipo de investigadores de IBM construyó una computadora cuántica del tipo NMRQC con una muestra líquida de moléculas con 7 spin nucleares (7 qubits) y factorizó el número 15 casi instantáneamente. Luego también se factorizó el número 21. Este fue el momento 'eureka' cuando los investigadores comenzaron a tomar en serio las computadoras cuánticas. Y aunque estos números son pequeños, en principio se pudo demostrar la factibilidad del algoritmo de Shor, el cual hoy en día en la práctica solo está limitado por el número de qubits de las QC actuales y el 'problema de la decoherencia' que aún queda por resolver, como explicaremos más adelante.


Lenguajes de Programación

En cuanto a lenguajes de programación para las computadoras cuánticas, existen varios enfoques. El primero y más básico es utilizar el Quantum Assembly Language (QASM), el cual consiste en una mezcla de Lenguaje Ensamblador y C de bajo nivel, pero dado que este es un lenguaje de 'bajo nivel', se require de un conocimiento un poco más profundo de la física que opera en la computadora cuántica. El otro enfoque es extender los lenguajes de 'alto nivel' de uso general existentes, como Python, Go y Java, para incluir algoritmos y funciones propias de las computadoras cuánticas. Por ejemplo mediante el desarrollo de un Software Development Kit (SDK) open-source, como Cirq de Google o Qiskit de IBM.

He aquí un ejemplo del programa clásico "Hello Word", con el cual todos aprendimos a programar en lenguaje C, que en este caso, apropiadamente para las QC, el programa se llama "Hello Many Worlds"; en referencia a la famosa interpretación de 'muchos mundos' en mecánica cuántica.

El ejemplo "Hello Many Worlds" se corre en dos qubits y utiliza los circuitos Hadamard (H) y CNOT explicados anteriormente, con un paso de medición (measure) al final, en un lazo que se repite 100 veces. De esta forma el algoritmo nos da un histograma, es decir, una representación de la distribución estadística de los estados de los qubits. El código fuente del programa se escribe en Python con el SDK Cirq de la siguiente forma:

# Import SDK
import cirq
import qpu

# Intitialize two qubits
q0, q1 = cirq.LineQubit.range(2)
circuit = cirq.Circuit()

# Gate sequence: Append circuits H, CNOT, and Measure
circuit.append( [ cirq.H(q0), cirq.CNOT(q0, q1), cirq.measure(q0, q1, key="x") ] )

# Prepare QPU hardware: Provide Service API_KEY and Target
service = Service( api_key="api-key", default_target="qpu" )

# Run: Calculate State Vector with 100 iterations
job = service.run( circuit=circuit, repetitions=100 )

# Print histogram output
print( job.histogram(key="x") )

El programa se puede salvar en un archivo de texto, al igual que en las computadoras clásicas, por ejemplo en este caso el archivo se puede llamar "hello_many_worlds.py". Para ejecutar el programa utilizando el intérprete de Python desde la linea de comando, basta con entrar:

$ python3 hello_many_worlds.py

Entonces la salida imprimirá un objeto Count():

Count ( { 0:42, 1:2, 2:1, 3:55 } )

El cual representa un histograma, como por ejemplo:

Valor Binario Frecuencia
0 00 42%
1 01 2%
2 10 1%
3 11 55%

Aquí vemos que la mayoría de los resultados son 0 y 3, que en binario serian "00" y "11". Entonces, los valores de Frecuencia del histograma corresponden a valores de la Probabilidad de medir el estado de los bits combinados (entrelazados), pero no de los estados 'individuales' de los bits, que es precisamente lo que esperamos de nuestro sencillo circuito cuántico de dos qubits.

El circuito cuántico que se crea en este caso corresponde al siguiente estado entrelazado de dos qubits -- utilizando notación bra-ket para los estados de los dos qubits (|00⟩ y |11⟩):

1/√2 ( |00⟩ + |11⟩ )

Durante el desarrollo y prueba de los algoritmos, los programas de computación cuántica normalmente se corren en un 'simulador', que es una computadora clásica que puede simular a una cuántica con cierto grado de precisión. Por ejemplo los sistemas NISQ (Noisy Intermediate-Scale Quantum), o los sistemas de procesamiento paralelo CUDA (Compute Unified Device Architecture) que se corren en el hardware de NVIDIA cuQuantum Appliance (multi-GPU), etc. Finalmente, cuando los programas son puestos a punto, en producción, el programa se corre en una QC real; según se especifica en el parámetro "target" de la función "Service()" en el programa anterior.

El otro enfoque es utilizar los lenguajes de programación general de alto nivel existentes. Por ejemplo, para Java ya existe una API Open Source, llamada ‘Strange’, que permite simular algoritmos cuánticos en computadoras NISQ con el hardware de NVIDIA cuQuantum Appliance, mencionado anteriormente.

Además existen lenguajes especialmente diseñados al efecto, como el Q Sharp (Q#) de Microsoft. Q# está disponible como una extensión para Visual Studio, pero también se puede ejecutar como 'command line'. El 'Quantum Development Kit' (QDK) contiene un simulador cuántico que es capaz de ejecutar Q#.

Para invocar el simulador cuántico de Q# se utiliza otro lenguaje de programación .NET, generalmente C#, que proporciona los datos de entrada (clásicos) para el simulador y lee los datos de salida (clásicos) del simulador.

Una característica interesante de Q# es la capacidad de crear y usar Qubits para desarrollar algoritmos. Como consecuencia, algunas de las características más destacadas de Q# son la capacidad de entrelazar (entangle) e introducir la superposición de los Qubits a través de compuertas CNOT y Hadamard, mencionadas anteriormente, así como utilizar las compuertas Toffoli, Pauli (X,Y,Z) y muchas más.


Decoherencia

Como hemos visto anteriormente, el estado de Entanglement, o coherencia cuántica entre los qubits, es un requerimiento fundamental para que las computadoras cuánticas puedan funcionar en la práctica. Mantener este delicado estado por un tiempo suficientemente largo para que las computadoras cuánticas puedan correr los algoritmos, es el mayor reto que los investigadores enfrentan en estos momentos.

En recientes experimentos de laboratorio se ha logrado mantener la coherencia en operaciones con qubits por 22 milisegundos, manteniendo su 'memoria' por 2 segundos, lo cual es una virtual eternidad para un qubit. Sin embargo este tiempo no es suficiente para implementar algunas aplicaciones prácticas. De ahí que el principal problema que enfrentan los investigadores es de la decohenencia espontánea de los qubits, debido a varios factores que los investigadores llaman "ruido" en el sistema, causado por las interacciones de la computadora cuántica con el ambiente clásico; como por ejemplo las perturbaciones causadas por la radiación o por el movimiento térmico aleatorio de los átomos que es función de la temperatura.

El problema de la radiación externa se puede resolver encerrando la computadora cuántica en una jaula de Faraday, mientras que el problema de la temperatura se combate con enfriamiento profundo. De esta forma el método más utilizado para combatir la decoherencia es el súper enfriamiento de los qubits a una temperatura que es solo una fracción de 1 grado Kelvin. De hecho, algunos sistemas se enfrían a unos pocos milikelvins.

Si no estas familiarizado con la escala Kelvin, recordemos que 0 Kelvin es el equivalente a -273.15 Celsius o -459.67 Fahrenheit. Este valor no es arbitrario. El punto 0 Kelvin es cero absoluto. Sin energía térmica; en absoluto. Para ponerlo en contexto, la superficie de Plutón está a menos de 40 Kelvin, y las temperaturas en el espacio cósmico suelen rondar los 2.7 Kelvin. Obviamente, la proximidad a fuentes de calor, como las estrellas, o incluso los rayos cósmicos, pueden alterar esto. Eso significa que hasta ahora la computación cuántica require temperaturas que son mucho más frías que Plutón, e incluso más frías que el espacio profundo.

En las implementaciones prácticas esto se logra enfriando la computadora con Helio líquido; utilizando diferentes isóstopos del Helio, considerando que:

§ El helio-3 tiene un punto de ebullición de 3.19 K
§ El helio-4 tiene un punto de ebullición de 4.21 K

He aquí algunos ejemplos de sistemas criogénicos:

Intel tiene un sistema llamado "Horse Ridge" que utiliza una mezcla de isótopos de helio como refrigerante que bajan la temperatura a 3 Kelvin.

Google tiene un circuito de control criogénico "CRYO CMOS IC" que opera a 4 Kelvin.

IBM está desarrollando un super refrigerador llamado "GoldenEye" que puede alcanzar temperaturas de alrededor de 0.015 Kelvin, con el cual espera alcanzar los 1000 qubits para el 2023.


Corrección de Errores y Número de Qubits

Los errores en operaciones con qubits pueden ocurrir por varias razones. Aparte de la decoherencia de los qubits explicada anteriormente, las operaciones cuánticas siempre van a tener un cierto nivel de 'incertidumbre'. Una forma de entender la incertidumbre cuántica es a través de la Esfera de Bloch, donde el ángulo final del qubit no se puede precisar con absoluta exactitud luego de una operación de rotación.

Pero al igual que en caso de las computadoras clásicas (por ejemplo en los circuitos de parity check, checksum, etc.) en principio es posible utilizar bits adicionales para corregir errores. Sin embargo, cuantos más errores se necesite corregir, más bits extra se tendrán que utilizar.

La corrección de errores normalmente se logra a través de la redundancia de la información. Por ejemplo, se ha demostrado que el número mínimo de qubits requerido para la corrección de errores cuánticos es 5 qubits adicionales por cada qubit que requiere corrección; a lo cual se le llama "Hamming bound". Sin embargo, en la práctica, en realidad se van a necesitar una gran cantidad de Qubits (del orden de los 1000 qubits) para corregir errores en unos pocos de ellos.

El modelo que normalmente se utiliza para la corrección de errores se denomina "repetidor", el cual consiste en hacer copias de los "qubits físicos" para periódicamente chequear unos contra otros y de esa forma garantizar la integridad de la información en los "qubits lógicos". Por ejemplo, los investigadores de IBM ya han logrado correr un programa de 1700 operaciones en su computadora cuántica utilizando estas técnicas de corrección de errores.

Otro enfoque al problema de la corrección de errores, y de cómo escalar los microchips cuánticos actuales que solo tienen unos pocos qubits, es utilizar redes de microchips cuánticos, en lugar de microchips individuales. Pero esto requiere resolver el problema de la transmisión de la información cuántica del estado de los qubits con alta fidelidad (sin perder la coherencia) entre microchips que pueden estar separados a distancias macroscópicas.

El otro modelo que están explorando los investigadores para poder escalar las computadoras cuánticas son los materiales donde se puedan lograr Qubits a temperatura ambiente, tal vez si se logran desarrollar los prometidos superconductores a temperatura ambiente.

La buena noticia es que si la tasa de error en qubits físicos es lo suficientemente baja, en teoría se pueden construir "qubits lógicos" extremadamente fiables y duraderos.


Supremacía Cuántica

La Supremacía Cuántica (o Ventaja Cuántica) se refiere a la capacidad de las computadoras cuánticas para resolver problemas que las computadoras clásicas no pueden resolver en la práctica porque les llevaría demasiado tiempo para completar. El término Supremacía Cuántica fue popularizado por el físico John Preskill, pero el concepto de ventaja computacional cuántica se remonta a las primeras propuestas sobre la computación cuántica de Richard Feynman y Yuri Manin en los años 80.

Implementar el algoritmo de Shor mencionado anteriormente para la factorización de números enteros sería un excelente ejemplo de Supremacía Cuántica, ya que que este algoritmo se ejecuta en tiempo polinomial en una computadora cuántica, lo cual significa una aceleración superpolinomial sobre cualquier algoritmo clásico conocido. Pero el algoritmo de Shor no es el único ejemplo que existe, y ni siquiera se requiere que la solución a un problema tenga una aplicación práctica para que un grupo declare haber logrado 'supremacía cuántica', por lo cual el término es debatible y confuso. Pero lo que hay que tener claro es que lograr 'supremacía cuántica' no significa que uno tiene la mejor computadora cuántica del mundo, sino que ha logrado desarrollar una computadora cuántica que puede resolver un problema específico mucho mejor, o mucho más rápido, que una computadora clásica.

Por otro lado hay que aclarar que tener una supercomputadora clásica de muchos bits que simule a una cuántica, no es lo mismo que tener 'supremacía cuántica'. Por ejemplo Apple afirma tener un procesador llamado M1 Max que contiene 57 mil millones de transistores, en un chip fabricado con un proceso de 5-nanómetros, el cual puede simular una computadora cuántica, pero eso no implica que Apple ha logrado supremacía cuántica.

En los últimos años varios grupos de investigadores han anunciado 'supremacía cuántica', empezando por D-Wave Systems de Burnaby en Columbia Británica que se convirtió en la primera empresa en vender comercialmente una computadora cuántica en el 2011. Poco después Google compró su primera computadora cuántica.

Google había anunciado planes para demostrar la supremacía cuántica desde finales de 2017 con una computadora de 49 qubits superconductores. También en octubre de 2017, IBM demostró su computadora cuántica de 56 qubits, aumentando así la potencia computacional necesaria para establecer la supremacía cuántica. A principios de enero de 2018, Intel anunció un programa de hardware similar.

El 20 de septiembre de 2019, el Financial Times reportó que "Google afirma haber alcanzado la supremacía cuántica con una matriz de 54 qubits de los cuales 53 eran funcionales, que se utilizaron para realizar una serie de operaciones en 200 segundos que llevarían a una supercomputadora aproximadamente 10,000 años para completar". A lo cual IBM respondió diciendo que algunas de las afirmaciones son excesivas y sugirió que podría tomar 2.5 días en lugar de 10,000 años, enumerando técnicas que una supercomputadora clásica puede usar para maximizar la velocidad de cómputo. La respuesta de IBM es relevante ya que la supercomputadora clásica más poderosa en ese momento, Summit, fue fabricada por IBM.

En diciembre de 2020 se reportó que un grupo con sede en la USTC en China alcanzó la supremacía cuántica al implementar un tipo de muestreo de bosones en 76 fotones con su computadora cuántica fotónica Jiuzhang. El documento afirma que para generar la cantidad de muestras que genera la computadora cuántica en 20 segundos, una supercomputadora clásica requeriría 600 millones de años de computación. El problema consiste en muestrear la distribución de probabilidad de bosones idénticos dispersos por un interferómetro lineal, el cual se puede reducir al cálculo del Determinante de una matriz cuadrada. Pero de nuevo algunos investigadores han planteado que solo se resolvió un 'problema artificial' que no tiene muchas aplicaciones prácticas, y que la afirmación de 'velocidad comparativa' puede ser un tanto exagerada.

Recientemente en el 2021 IBM reportó ser la primera compañía que logra pasar la barrera de los 100 qubits con un nuevo procesador cuántico llamado "Eagle" de 127 qubits que, según un vocero de IBM, "es imposible simularlo con otra cosa, lo que implica que es más poderoso que cualquier otra cosa". La compañía además dijo que planea un chip "Osprey" en 2022 con 433 qubits y un chip "Condor" de 1,121 qubits.


Implementación Física de los Qubits

En las implementaciones más comunes de los Qubits se utilizan fotones, que son las partículas cuánticas que componen la luz. Los fotones se utilizan comúnmente porque en forma natural ellos se presentan en dos estados determinados por su polarización. Además el estado de coherencia es relativamente fácil de lograr utilizando laseres. Por ejemplo, la polarización horizontal se puede asociar con el |0⟩ y la vertical con el |1⟩.

De esa forma cuando los fotones están en estado de Entanglement, ellos tendrán una polarización que será una combinación lineal probailística de |0⟩ y |1⟩, es decir, ni solo horizontal ni solo vertical (un ángulo intermedio en la esfera de Bloch). Entonces, para realizar la medición del estado, se hace pasar la luz por un polarímetro, lo cual fuerza al fotón a 'colapsar' en uno de los dos estados. Esta es la esencia del método de la polarización de los fotones para codificar los Qubits.

Las implementaciones basadas en fotones son de interés para los investigadores porque son relativamente sencillas (comparadas con las que requieren circuitos superconductores) y porque pueden funcionar a temperatura ambiente (comparadas con las que requieren temperaturas cercanas al cero absoluto), lo cual es prometedor. Sin embrago hasta ahora ha sido un gran reto poder crear "compuertas cuánticas" que se puedan conectar unas a otras para realizar cálculos complejos basándose en fotones.

La otra implementación común de los Qubit es utilizando electrones, específicamente utilizando la propiedad del Spin (Espín) que también puede tener dos valores intrísecos +1/2 y -1/2. Esto se debe a que el electrón es una partícula cuántica que petenece a la familia de los fermiones, los cuales se caracterizan por tener spin semientero. Por ejemplo, el spin hacia arriba (+1/2) puede designar el estado |1⟩ mientras que el spin hacia abajo (-1/2) designa el estado |0⟩, o viceversa porque en definitiva esa asociación es arbitraria. El estado del Spin entonces se puede medir de varias formas. El método convencional para leer el spin de un electrón en silicio es convertir el cambio del spin en cargas eléctricas que puedan detectarse rápidamente a escalas nanométricas -- ver 'punto cuántico' más adelante.

Trasmón (Qubits Superconductores)

En la computación cuántica, y más específicamente en la computación cuántica superconductora, un Transmón es un tipo de Qubit de carga superconductora que fue diseñado para tener una sensibilidad reducida al ruido. Su nombre es una abreviatura del término "transmission line shunted plasma oscillation qubit". Técnicamente, un Trasmón consiste en un conjunto de dispositivos superconductores basados en 'Pares de Cooper' (parejas de electrones que se comportan como bosones debido a las interacciones electón-fonón en la red cristalina del metal) los cuales se implementan con 'Junturas Josephson' para disminuir la sensibilidad al ruido.

Una Juntura Josephson es un dispositivo electrónico tipo SIS (Superconductor–Insulator–Superconductor) que implementa un Qubit. Estos qubits a su vez reciben otros nombres dependiendo de la forma en que se mide su estado. Por ejemplo, un 'qubit de fase' se mide utilizando la propiedad de 'carga inductiva' gracias a la energía magnética almacenada en el inductor de Josephson; al cual a veces le llaman 'fluxonium'. Por otro lado en un 'qubit de carga' se utiliza la propiedad de la 'carga eléctrica' gracias a la capacitancia total del circuito.

Una vez que los qubits superconductores se enfrían suficientemente (cerca de 0 grados Kelvin o cero abosluto) entonces se utilizan microondas que interactuaron con los campos magnéticos de los qubits para manipular el estado de entanglement.

Esta es la implementación de los Qubits que se utilizan en varias de las más populares computadoras cuánticas comerciales, como la de IBM (System One) y la de Google (Sycamore).

Trasmon de IBM: 4 Qubits con 4 Resonadores de Lectura

Quantum Dot (Punto Cuántico)

El término Quantum Dot o QD (Punto Cuántico) viene de la nanotecnología y es una forma de utilizar electrones para almacenar Qubits en semiconductores, como por ejemplo el silicio, sin requerir enfriamiento profundo; como en el caso de los superconductores.

En 1997 un grupo de investigadores propusieron un tipo de computadora cuántica que utiliza un efecto de los electrones en un sólido cristalino llamado "spin degrees of freedom", el cual se refiere a la cantidad de estados electrónicos (ocupados y desocupados) que tienen la misma energía, o casi la misma energía, de modo que los electrones son libres para ocupar ese estado. Este efecto se puede implementar gracias a la nanotecnología, pero el asunto es un tanto complejo, por lo cual no lo vamos a discutir en detalle, excepto para definir lo que se conoce como 'punto cuántico' (quantum dot, en inglés).

Físicamente los puntos cuánticos son pequeñas nanopartículas esféricas hechas de materiales semiconductores, como Silicio, o Carburo de Silicio, o Arseniuro de Galio, o Grafeno, de forma tal que el diámetro de la esfera sea menor que la longitud de onda del electrón en dicho material, lo cual permite mantener el estado de Entanglement en los Qubits. Los puntos cuánticos a su vez se relacionan con los cables cuánticos y los pozos cuánticos, según se define en nanotecnología:

§ Pozo Cuántico: El electrón está confinado en una dirección y puede moverse libremente en las dos direcciones restantes.
§ Cable Cuántico: El electrón está confinado en dos direcciones y puede moverse libremente solo en la dirección restante.
§ Punto Cuántico: El movimiento está confinado en las tres direcciones del espacio y la energía de los electrones solo puede tener valores discretos.

Los puntos cuánticos entonces son sistemas electrónicos de dimensión casi nula, donde la densidad de estados es cero fuera de un conjunto de valores discretos de energías permitidos.

Esta es la implementación de los Qubits que utiliza Intel en sus chips cuánticos "Tangle Lake" y "Tunnel Falls" para almacenar qubits en silicio.

Intel Tangle Lake QC Processor (49-Qubits)

Por cierto, la tecnología de los Quantum Dot combinada con los LED (Light-Emitting Diode), basada en semiconductores a escala nanométrica, también se utiliza en la fabricación de las modernas pantallas de TV llamadas QLED y QNED.

GaAs

El Arseniuro de Galio (GaAs) es un material semiconductor que a menudo se utiliza para crear un 'punto cuántico' (Quantum Dot o QD). El punto cuántico en este caso es un dispositivo de escala nanométrica confinado en las tres dimensiones. Cuando los átomos en el GaAs están sujeto a un campo magnético ocurre el fenómeno conocido como Efecto Overhauser. El Efecto Overhauser es un efecto nuclear que se produce cuando la polarización de espín nuclear de una población de espines se transfiere a otra. Los detalles de este proceso están más allá del alcance de nuestra introducción. Sin embargo, lo que hay que saber es que el proceso genera un pulso de RF, o una serie de pulsos, que se relaciona con la frecuencia de resonancia de los núcleos; los cuales se pueden medir para conocer el estado del sistema.

Trapped Ion (Ion Atrapado)

Algunas computadoras cuánticas de tipo "trapped ion", como la IonQ en su computadora cuántica de 32 qubits, utilizan iones atrapados (átomos ionizados) para implementar los Qubits. El estado de entanglement en este caso se logra utilizando laseres para mantener los iones atrapados de un metal 'tierras raras' llamado Ytterbium.

Chip Ytterbium de IonQ

Otro ejemplo de computadora cuántica de iones atrapados es el System Model H1 de Honeywell que tiene un chip de 10 qubits que debutó en Septiembre del 2020 con muy buenos reviews.

Chip H1 de Honeywell

NMRQC

La computación cuántica por resonancia magnética nuclear (Nuclear Magnetic Resonance Quantum Computer o NMRQC) es un enfoque muy interesante para la implementación física de las computadoras cuánticas. Este enfoque utiliza estados del spin de núcleos dentro de moléculas en una muestra líquida del aminoácido Alalina (aunque también se investiga utilizar el centro nitrógeno-vacante en muestras sólidas de diamante) para representar los Qubits. En este caso para medir los Qubits se utiliza la misma tecnología que se usa en los equipos de Imagen por Resonancia Magnética (MRI) en medicina, de ahí el nombre.

BEC (Condensado Bose-Einstein)

Un Condensado de Bose-Einstein (Bose-Einstein Condensate; BEC) es un estado de la materia que se forma cuando un gas que consta de bosones (partículas cuánticas con spin entero) se enfría a temperaturas bastante cercanas al cero absoluto y ocurre un cambio de fase, por lo cual a veces le llaman el 'quinto estado de la materia'; que es diferente a los otros cuatro estados físicos conocidos: sólido, líquido, gas y plasma. Los bosones pueden ser partículas elementales, como los fotones, o partículas compuestas, e incluso pueden ser cuasipartículas. En el Modelo Estándar de las partículas elementales los bosones son los mediadores de los campos, a los cuales se les llama 'bosones de gauge', según el tipo de fuerza o interacción de que se trate. Por ejemplo:

§ Fotones (interacción electromagnética)
§ Gluones (interacciones nucleares fuertes)
§ Bosones W cargados (interacciones nucleares débiles)
§ Bosones Z neutros (interacciones nucleares débiles)

Aunque, como se ha dicho, los bosones también pueden ser partículas compuestas como el caso de los 'pares de Cooper' de la superconductividad que son parejas de electrones que interactúan con los fonones de la red cristalina, o los átomos de Helio, u otros átomos en el fenómeno de la superfluidez, etc.

La posibilidad de almacenar qubits de esta forma es prometedora porque los condensados de bosones parecen ser menos sensibles a la decoherencia, comparados con las opciones anteriores.




Notación Braket y Esfera de Bloch


Este es un breve comentario sobre la notación bra-ket que se utiliza para representar los Qubits como: |0⟩ y |1⟩. La notación bra-ket consiste en una pareja de símbolos, la barra horizontal y el paréntesis angular que encierran el valor lógico asignado al qubit -- o la Función de Onda ψ (letra griega Psi) que representa su estado. De forma tal que si el paréntesis se pone a la izquierda se llama bra ( ⟨ψ| ) pero si se pone a la derecha se le llama ket ( |ψ⟩ ). La notación bra-ket fue introducida por Dirac en mecánica cuántica con relación a su teoría del "Spinor", como vectores cuyas componentes son Funciones de Onda (representada por ψ) para describir los dos posibles estados del espín del electrón (spin), definidos arbitrariamente como "arriba" y "abajo".

La otra forma de representar los qubits es utilizando las matrices del Algebra Lineal; específicamente utilizando 'vectores verticales' de la siguiente forma:



Su objetivo en la computación cuántica es recordarnos que estamos hablando de vectores que representan estados cuánticos etiquetados como "0" y "1". Esto nos ayuda a distinguirlos de otras cosas parecidas, como los bits clásicos con valores lógicos de 0 y 1, o los valores escalares 0 y 1, o los números 0 y 1. Lo cual se logra considerando que |0⟩ y |1⟩ en realidad forman una base de vectores ortogonales; según se define en Algebra Lineal.

Entonces, el estado general del qubit, representado por |ψ⟩, resulta ser una combinación lineal de los estados básicos |0⟩ y |1⟩ de la siguiente forma:

|ψ⟩ = α⋅|0⟩ + β⋅|1⟩

Donde α y β son números complejos cuyos módulos al cuadrado son números reales positivos que representan la probabilidad del estado puro, tal que su suma es siempre igual al número uno; el valor máximo de la probabilidad total:

|α|2 + |β|2 = 1

El hecho que los coeficientes de la combinación lineal anterior (α y β) son números complejos significa que en principio se podrían representar por cuatro números reales, ya que cada número complejo va a tener una parte real "a" y una parte imaginaria "b", de la forma "a + i⋅b", donde "i" es la unidad de los números imaginarios √-1. Pero dado que ellos tienen que cumplir la relación de 'normalización de la suma de probabilidades', es decir, que la suma de sus módulos al cuadrado tiene que ser igual al número 1, entonces solo nos quedarían tres números independientes.

Y si además añadimos la condición de que en mecánica cuántica un 'desplazamiento de fase' en la Función de Onda no cambia la probabilidad de medir un cierto valor del qubit, ya que no cambia su 'norma', entonces en realidad solo tenemos dos números reales independientes, por lo cual los estados cuánticos puros se pueden representar en una cierta esfera de radio unidad en tres dimensiones llamada Esfera de Bloch.

Otra forma de verlo es escribiendo los números complejos α y β en coordenadas polares utilizando la función exponencial de Euler (e):

α = r0⋅eiφ0
β = r1⋅eiφ1

Haciendo un poco de álgebra, y considerando que la 'norma' del vector resultante debe ser unitaria, es posible escribir el estado del qubit utilizando la fórmula de Euler en función de dos valores angulares o fases (θ y φ) de la siguiente forma:

|ψ⟩ = cosθ⋅|0⟩ + e⋅sinθ⋅|1⟩

De esta forma la Esfera de Bloch nos da una representación minimalista de los estados cuánticos puros donde los estados |0⟩ y |1⟩ se asignan a los polos de las esfera, y los dos números independientes que definen cualquier otro estado se representan en coordenadas polares como dos ángulos de un vector unitario (ángulo polar θ y ángulo azimutal φ) según se muestra en el siguiente gráfico.

Esfera de Bloch

Una de las ventajas de la representación gráfica de los qubits en una esfera de Bloch es que las operaciones de las compuertas en los circuitos cuánticos se pueden visualizar como rotaciones y transformaciones de los vectores en dicha esfera, lo cual a su vez permite la aplicación de la matemática de la Teoría de Grupos (Grupos de Simetría) para diseñar algoritmos y circuitos cuánticos.




Apéndice: Quantum Annealing


Además de la arquitectura basada en 'Quantum Gates' descrita anteriormente, existe otra arquitectura llamada 'Quantum Annealing' (traducido en español como Temple Cuántico) que compite con la arquitectura de compuertas cuánticas. El Quantum Annealing (QA) es un método heurístico para encontrar la solución a un problema de optimización, utilizando el efecto de las fluctuaciones cuánticas y el algoritmo de Monte Carlo, que repite una gran cantidad de muestreos aleatorios para reducir la complejidad de cómputo a costa de perder algo de precisión estadística. El método QA en la computación cuántica comercial ha sido impulsado sobre todo por la compañía D-Wave Systems.

El 'Quantum Annealing' también se relaciona con la 'Adiabatic Quantum Computing' que busca el plantemiento de un problema dado de cómputo de forma tal que su solución sea el estado de menor energía del sistema físico que lo simula, y de ahí el nombre de 'adiabático'. Aunque el Quantum Annealing no es un método de propósito general y en la práctica solo se utiliza para resolver problemas de 'optimización combinatoria'; pero no para implementar algoritmos de criptografía, como por ejemplo los algoritmos de Shor y Grover.

La competencia entre el Quantum Annealing y los Quantum Gates nos recuerda algo de la competencia que existió entre Betamax y VHS cuando surgieron las grabadoras de video, por lo cual muchos investigadores esperan que al final quedará una arquitectura prevalente, o quizás resulte que lo mejor sea una combinación de ambas arquitecturas según el problema que se desse resolver.

Computadora Cuántica D-Wave por dentro



Nota: Principales Empresas de Computación Cuántica


Compañías / Organizaciones: IBM Quantum Computing, Google Research, D-Wave Systems, Microsoft Quantum Computing, Intel, Hewlett Packard: Quantum Information Processing, Toshiba Quantum Information Group, Alibaba Quantum Computing Laboratory, Rigetti Computing, IonQ, QxBranch, Xanadu, Post-Quantum, QuintessenceLabs, ID Quantique, Cambridge Quantum Computing y Quantum Biosystems, PASQAL, Multiverse Computing.

Usuarios / Aplicaciones: Lockheed Martin, Rolls-Royce, In-Q-Tel, NASA, Goldman Sachs Group, Royal Bank of Scotland Group, Morgan Stanley, Bank of Canada.

Gobiernos: Estados Unidos / US, China, Gran Bretaña / UK, Francia, Alemania, Japón, Israel, Canadá, Finlandia.



Nota: Linea de Tiempo de la Computación Cuántica


1981 - En mayo de 1981, el físico y premio Nobel Richard Feynman dio una conferencia titulada "Simulando física con computadoras", donde propuso la idea de usar computadoras cuánticas para simular sistemas cuánticos que son demasiado difíciles de simular usando computadoras clásicas.

1982 - Richard Feynman y Yuri Manin proponen el concepto de 'Ventaja Cuántica' para referirse a problemas que pudieran resolverse con una computadora cuántica mejor, o mucho más rápido, que con una clásica; aunque ni Feynman ni Manin participaron en el esfuerzo de construir una computadora cuántica en la práctica. Luego el término 'Supremacía Cuántica' fue popularizado por el físico teórico John Preskill quien ha estado lidereando el desarrollo de computadoras cuánticas desde hace 20 años.

1994 - El matemático Peter Shor en Bell Labs demuestra su algoritmo que permite factorizar grandes números enteros en tiempo polinomial en una computadora cuántica. Este fue el momento 'eureka' cuando los investigadores comenzaron a tomar en serio las computadoras cuánticas.

1997 - Daniel Loss y David DiVincenzo proponen un tipo de computadora cuántica que utiliza un efecto de los electrones en un sólido cristalino llamado "spin degrees of freedom". Este efecto permite construir un "Punto Cuántico" (Quantum Dot, en inglés) que se implementa gracias a la nanotecnología.

1998 - El Laboratorio de Los Alamos y el Instituto de Tecnología de Massachusetts (MIT) logran propagar el primer qubit en una solución de aminoácidos. Este logro luego impulsó las investigaciones en un tipo de computadora cuántica llamada "Nuclear Magnetic Resonance Quantum Computer" o NMRQC.

1999 - La primera computadora de dos qubits fue construida por la Universidad de California en Berkeley.

2001 - IBM realiza una 'prueba de concepto' del algoritmo de Shor y factoriza el número 15 en una computadora NMRQC con una muestra líquida de moléculas con 7 spin nucleares (7 qubits).

2004 - Primer entrelazamiento de 5 fotones demostrado por el grupo de Jian-Wei Pan en la Universidad de Ciencia y Tecnología de China, el número mínimo de qubits requerido para la corrección universal de errores cuánticos; llamado "Hamming bound" en computación.

2004 - El Instituto de Óptica Cuántica e Información Cuántica de la Universidad de Innsbruck en Austria desarrolló el primer sistema de qubytes (8 qubits).

2006 - Primera computadora cuántica de 12 qubit desarrollada por investigadores del Instituto de Computación Cuántica y el Instituto Perimeter de Física Teórica en Waterloo, Canadá, en colaboración con el MIT.

2009 - La Universidad de Yale creó el primer procesador cuántico.

2009 - NIST (National Institute of Standards and Technology) demuestra múltiples operaciones informáticas en qubits.

2011 - La compañía D-Wave Systems, en Columbia Británica, Canadá, desarrolla el método de "Quantum Annealing" e introduce su producto llamado D-Wave One. La compañía afirma que esta es la primera computadora cuántica disponible comercialmente.

2012 - D-Wave Systems afirma haber completado un cálculo cuántico utilizando 84 qubits con su computadora.

2012 - David Wineland del NIST recibe el Premio Nobel de Física "por métodos experimentales innovadores que permiten medir y manipular sistemas cuánticos individuales", aplicables a la computación cuántica.

2012 - Científicos israelitas logran suprimir la decoherencia de los qubits durante 2 segundos a temperatura ambiente mediante la manipulación de átomos de carbono 13 con láseres.

2014 - Científicos de la ESA Optical Ground Station transfieren datos por teleportación cuántica a una distancia de 10 pies con una tasa de error del cero por ciento.

2016 - Científicos chinos demuestran una aplicación de Entanglement y QKD (quantum key distribution) entre satélites a 1,200 km de distancia.

2016 - D-Wave Systems anunció que había roto la barrera de los 1000 qubit; pero usando el modelo de "Quantum Annealing", no "Quantum Gates".

2017 - IBM presenta una computadora cuántica de 17 qubits con "Quantum Gates" que se pueden interconectar para formar un circuito cuántico.

2017 - IBM revela una computadora cuántica de 50 qubit que puede mantener su estado de coherencia o entrelazamiento cuántico durante 90 microsegundos.

2018 - Google anunció la creación de un chip cuántico de 72 qubit llamado "Bristlecone".

2018 - Intel confirma el desarrollo de un chip superconductor de prueba con 49 qubit, llamado "Tangle Lake".

2018 - D-Wave Systems lanza su Quantum Computing Cloud llamada Leap: https://cloud.dwavesys.com/leap/.

2019 - IBM presenta su primera computadora cuántica comercial, la IBM Q System One. Es un sistema de 20 qubit que tiene un paquete autónomo y se puede mover. El contenedor es una jaula de Faraday.

2019 - IBM también devela su open source SDK (Qiskit) para la programación de computadoras cuánticas: https://qiskit.org/.

2020 – Microsoft anuncia que dedicará sus esfuerzos a la investigación de Qubits Topológicos para escalar las QC del futuro. Los Qubits Topológicos se basan en una clase de cuasi-partículas llamadas MZM que consisten en parejas de 'Majorana zero modes'.

2021, Enero: Investigadores chinos informan que han construido la red de comunicación cuántica integrada más grande del mundo, utilizando más de 700 fibras ópticas con dos enlaces QKD tierra-satélite para una distancia total entre nodos de redes de aproximadamente 4,600 km.

2021, Julio: Investigadores de Harvard University presentan un simulador cuántico programable que puede funcionar con 256 qubits.

2021, Octubre: Investigadores chinos reportan haber desarrollado una computadora cuántica basada en fotones programables (Jiuzhang 2) de 66 qubit y la han utilizado para resolver una tarea 1024 veces más rápido que las computadoras clásicas. El problema resuelto es bastante oscuro, involucra muestreo de bosones gaussianos (GBS).

2021, Noviembre: NVIDIA auncia su cuQuantum Appliance, que es un simulador cuántico multi-GPU de clase NISQ (Noisy Intermediate Scale Quantum).

2021, Noviembre: IBM reportó ser la primera compañía que logra pasar la barrera de los 100 qubits supercondutores, enfriados con helio líquido cerca del cero absoluto (0 Kelvin), con un nuevo procesador cuántico llamado "Eagle" de 127 qubits. La compañía anuncia que planea un chip "Osprey" en 2022 con 433 qubits y un chip "Condor" de 1,121 qubits.

2021, Diciembre: La compañía Cambridge Quantum Computing lanza un servicio llamado "Quantum Origin", considerada la primera plataforma de generación de claves criptográficas (QKD) comercialmente disponible, basada en la aleatoriedad cuántica verificable.

2022, Enero: La compañía Xanadu demuestra 'supremacía cuántica' con su computadora fotónica Borealis. El problema que se escogió para resolver es el Muestreo Bosónico (Boson Sampling, en inglés) con un algoritmo de muestrear la distribución de probabilidad de bosones idénticos dispersos por un interferómetro lineal, el cual es muy difīcil de resolver con una computadora clásica, aunque matemáticamente se puede reducir al cálculo del Determinante de una matriz cuadrada.

2022 - Continuará ...



Conclusión

Para finalizar, solo algunas ideas aleatorias más ... justo como en mecánica cuántica.

El único "algoritmo matador" hasta ahora es el de Shor porque puede romper los algoritmos de criptografía pública actuales.

El reemplazo de los algortimos de criptografia no va a ser tan simple porque los nuevos algoritmos pueden tener diferentes características. Incluso tal vez sea posible desarrollar nuevos algoritmos de criptografía que sean "quantum resistant" antes que se resuelva el problema técnico de la decoherencia, es decir, nuevos algoritmos que puedan resistir los ataques de las computadoras cuánticas. La clave del asunto es encontrar algoritmos de criptografía donde las computadoras cuánticas sean solamente "tan eficientes como las clásicas", pero "no más eficientes que las clásicas". Y todo esto va a requerir un replanteamiento de las implementaciones y protocolos.

Posiblemente esto se logre utilizando la matemática de la "Lattice-based Cryptography", como por ejemplo con la tarjeta Crypto Express 8S que IBM ya está probando en su computadora mainframe Z16. También la compañía Cloudflare está ofreciendo un servicio de TLS post-cuántico con llave Kyber híbrida para el cifrado del tráfico Web; aunque hay que decir que este servicio aún está en beta.

A pesar de los exponenciales avances en los últimos años, la Computación Cuántica aún está en fase de investigación científica, sobre todo en lo que respecta a resolver el problema de la decoherencia de los Qubits, y por eso la fuerte competencia que observamos actualmente entre las grandes compañías de QC. No obstante los investigadores esperan que la QC alcance su madurez en un par de años y entonces comenzaremos a ver verdaderas aplicaciones prácticas que una vez más revolucionarán la ciencia y la tecnología.

La mayoría de nosotros no participaremos en el intento de construir computadoras cuánticas, pero quizás los ingenieros y programadores más jóvenes sí lo hagan. De todas formas es bueno apoyar esta investigación como podamos.

Esperamos que estas notas le hayan servido para adquirir una mejor idea de lo que es una computadora cuántica y lo que se puede hacer con ella; más allá del repetido cliché de que "un qubit es un bit que puede estar en 0 y 1 al mismo tiempo". Si así ha sido, déjenme saber.