
Computación cuántica en pocas palabras#
La computación cuántica representa un nuevo paradigma en computación que utiliza los principios fundamentales de la mecánica cuántica para realizar cálculos. Si estás leyendo esto, sin duda habrás escuchado que la promesa de la computación cuántica radica en la posibilidad de realizar de manera eficiente un puñado de tareas como la factorización en números primos, simulación cuántica, búsqueda, optimización y programas algebraicos como el machine learning; cálculos que en tamaño están más allá de las capacidades incluso de las computadoras clásicas más grandes.
El poder de la computación cuántica se basa en dos pilares de la mecánica cuántica, la interferencia y el entrelazamiento que resaltan los aspectos ondulatorios y de partículas de la computación cuántica, respectivamente. Qiskit es un kit de desarrollo de software (Software Development Kit, SDK) para realizar cálculos cuánticos que utilizan estos principios de la mecánica cuántica usando el lenguaje de los circuitos cuánticos. Compuestos por compuertas cuánticas, instrucciones y lógica de control clásica, los circuitos cuánticos permiten expresar algoritmos complejos y aplicaciones de manera abstracta que pueden ser ejecutados en una computadora cuántica. En esencia, Qiskit es un motor de construcción, optimización y ejecución de circuitos cuánticos. Las capas de aplicaciones y algoritmos adicionales aprovechan los circuitos cuánticos, a menudo en combinación con recursos computacionales clásicos, para resolver problemas de optimización, química cuántica, física, machine learning y finanzas. A continuación, brindamos una breve descripción general de la computación cuántica y cómo se emplea Qiskit en cada paso. Los lectores interesados son dirigidos a materiales detallados adicionales para obtener más información.
Interferencia#
Al igual que una computadora clásica, una computadora cuántica opera en bits. Sin embargo, mientras que los bits clásicos solo se pueden encontrar en los estados 0 y 1, un bit cuántico, o qubit, puede representar los valores 0 y 1, o combinaciones lineales de ambos. Estas combinaciones lineales se conocen como superposiciones (o estados de superposición).
Para ver cómo se utiliza este recurso en la computación cuántica, primero recurrimos a un análogo clásico: cancelación de ruido. La cancelación de ruido, como se hace en los auriculares con cancelación de ruido, por ejemplo, se realiza empleando la superposición y el principio de interferencia para reducir la amplitud del ruido no deseado generando un tono de aproximadamente la misma frecuencia y amplitud, pero desfasado por un valor de \(\pi\) (o cualquier otro múltiplo entero impar de \(\pi\)).

Figura 1 Cancelación aproximada de una señal de ruido por un tono de amplitud casi igual y compensado por una fase de \(\sim \pi\).#
Como se muestra arriba, cuando la diferencia de fase está cerca de un múltiplo impar de \(\pi\), la superposición de las dos ondas da como resultado una interferencia y una salida que se reduce significativamente en comparación con la original. El resultado es la señal de interés libre de ruido. Aunque este procesamiento se realiza mediante circuitos digitales, la amplitud y la fase son variables continuas que nunca pueden coincidir perfectamente, lo que resulta en una corrección incompleta.
Un cálculo general en una computadora cuántica procede de manera muy similar a la cancelación de ruido. Para empezar, se prepara una superposición de todos los posibles estados de cálculo. Esto luego se usa como entrada a un circuito cuántico que interfiere selectivamente los componentes de la superposición de acuerdo con un algoritmo prescrito. Lo que queda después de cancelar las amplitudes y fases relativas del estado de entrada es la solución al cálculo realizado por el circuito cuántico.

Figura 2 Computación cuántica como proceso de generación de interferencia.#
Entrelazamiento#
El segundo principio de la mecánica cuántica que puede utilizar la computación cuántica es el fenómeno del entrelazamiento. El entrelazamiento se refiere a estados de más de un qubit (o partículas en general) en los que el estado combinado de los qubits contiene más información que la de los qubits individualmente. La inmensa mayoría de los estados cuánticos de varios qubits están entrelazados y representan un recurso valioso. Por ejemplo, los estados entrelazados entre qubits se pueden usar para la teleportación cuántica, donde un estado entrelazado compartido de dos qubits se puede manipular para transferir información de un qubit a otro, independientemente de la proximidad física relativa de los qubits. Los estados entrelazados, como estados naturales de los sistemas cuánticos, también son importantes en disciplinas como la química cuántica y la simulación cuántica, donde la(s) solución(es) a menudo toman la forma de estados de múltiples qubits entrelazados. También se pueden utilizar estados cuánticos altamente entrelazados de múltiples qubits para, por ejemplo, generar números aleatorios certificables. ¡Incluso hay un paquete de Qiskit para hacer esto!
Circuitos cuánticos#
Los algoritmos y las aplicaciones que utilizan recursos de la mecánica cuántica se pueden escribir de manera fácil y eficiente en el lenguaje de circuitos cuánticos. Un circuito cuántico es una rutina computacional que consiste en operaciones cuánticas coherentes sobre datos cuánticos, como el que se mantiene en qubits, y computación clásica concurrente en tiempo real. Cada línea horizontal o cable en un circuito representa un qubit, siendo el extremo izquierdo del cable los datos cuánticos iniciales y el derecho los datos cuánticos finales generados por el cálculo del circuito cuántico. Las operaciones en qubits se pueden colocar en estos cables y se representan mediante cajas.

Figura 3 Revisando el circuito de teleportación de estados cuánticos.#
Los circuitos cuánticos permiten a una computadora cuántica tomar información clásica y generar una solución clásica, aprovechando principios cuánticos como la interferencia y el entrelazamiento para realizar el cálculo.
Un flujo de trabajo típico de un algoritmo cuántico consiste en:
El problema que queremos resolver,
Un algoritmo clásico que genera una descripción de un circuito cuántico,
El circuito cuántico que necesita ser ejecutado en un hardware cuántico,
Y la solución clásica que resulta del problema que este produce.
Las compuertas cuánticas forman las operaciones primitivas sobre datos cuánticos. Las compuertas cuánticas representan transformaciones reversibles que preservan la información de los datos cuánticos almacenados en qubits. Estas transformaciones «unitarias» representan el núcleo mecánico cuántico de un circuito cuántico. Algunas compuertas como \(X\) (también escrito como \(\oplus\)) y \(CX\) tienen análogos clásicos como las operaciones de cambio de bit (bit-flip) y \(XOR\), respectivamente, mientras que otras no. La compuerta Hadamard (\(H\)), junto con las rotaciones parametrizadas \(rX(\theta)\) y \(rY(\theta)\), generan estados de superposición, mientras que las compuertas como \(Z\), \(rZ(\theta)\), \(S\), y \(T\) imparten fases que pueden usarse para la interferencia. Las compuertas de dos qubit como la compuerta \(CX\) se utilizan para generar entrelazamientos entre pares de qubits, o para «patear» la fase de un qubit a otro. A diferencia de las compuertas, las operaciones como la «medición», representadas por el símbolo de medidor en una caja con una línea que se conecta a un cable «objetivo», extraen información parcial sobre el estado de un qubit, a menudo perdiendo la fase, para poder representarlo como un bit clásico y escribir ese bit clásico en el cable de destino (a menudo un cable completamente clásico en algún dispositivo de lectura). Esta es la forma típica de llevar información de los datos cuánticos a un dispositivo clásico. Ten en cuenta que con solo \(H\), \(rZ(\theta)\), \(CX\), y compuertas de medición, es decir, un conjunto de compuertas universales, podemos construir cualquier circuito cuántico, incluidos los que calculan eficazmente la dinámica de cualquier sistema físico de la naturaleza.
Algunas cargas de trabajo contienen una secuencia extendida de circuitos cuánticos intercalada con cálculos clásicos, por ejemplo, los algoritmos cuánticos variacionales ejecutan circuitos cuánticos dentro de un bucle de optimización que contiene procesamiento clásico. Para estas cargas de trabajo, el rendimiento del sistema aumenta significativamente si los circuitos cuánticos son parametrizados y las transiciones entre ejecución del circuito cuántico y cálculos clásicos se hacen eficientemente. Por esto, definimos el término computación en tiempo cercano (near-time computation) para referirnos a los cálculos con algoritmos que hacen uso de circuitos cuánticos de manera repetida con hardware desarrollado para acelerar los tiempos de computación. En la computación de tiempo cercano, los cálculos clásicos ocurren en una escala de tiempo más larga que los tiempos de coherencia de la computación cuántica. A diferencia de la computación en tiempo real (real-time computation), donde los cálculos clásicos ocurren dentro de los tiempos de decoherencia de un dispositivo cuántico.
La construcción de circuitos cuánticos complejos con el mínimo esfuerzo está el corazón de Qiskit, que admite un amplio conjunto de funciones de operaciones y puede enviar tus circuitos a una variedad de computadoras cuánticas o simuladores clásicos. Con solo unas pocas líneas de código, es posible construir circuitos complejos como el de arriba.
qr = QuantumRegister(3, 'q')
cr = ClassicalRegister(2, 'zx_meas')
qc = QuantumCircuit(qr,cr)
qc.reset(range(3))
qc.barrier()
qc.h(1)
qc.cx([1,0],[2,1])
qc.h(0)
qc.barrier()
qc.measure([0,1], [0,1])
qc.barrier()
qc.z(2).c_if(cr, 1)
qc.x(2).c_if(cr, 2)
Computadoras cuánticas#

Figura 4 Una vista del interior de IBM Quantum System One.#
Las computadoras cuánticas que se programan utilizando circuitos cuánticos pueden construirse a partir de cualquier tecnología cuántica que permita definir elementos de qubits y pueda implementar operaciones de compuertas de uno y varios qubits con alta fidelidad. En la actualidad, se están desarrollando activamente arquitecturas basadas en circuitos superconductores, iones atrapados, puntos cuánticos semiconductores, fotones y átomos neutros, y muchos son accesibles para los usuarios a través de Internet. Qiskit es agnóstico con respecto a la arquitectura subyacente de un sistema cuántico dado y puede compilar un circuito cuántico para que coincida con la topología de la compuerta de entrelazamiento de un dispositivo cuántico, mapear las instrucciones del circuito en el conjunto de compuertas nativas del dispositivo y optimizar el circuito cuántico resultante para mejorar la fidelidad.
Al igual que con el ejemplo anterior de cancelación de ruido, la amplitud y la fase de los qubits son grados de libertad continuos en los que las operaciones nunca se pueden realizar con exactitud. Estos errores de compuerta, junto con el ruido del entorno en el que reside una computadora cuántica, pueden conspirar para arruinar un cálculo si no se tienen en cuenta en el proceso de compilación, y pueden requerir procedimientos de mitigación adicionales para obtener una salida de alta fidelidad en los sistemas cuánticos actuales susceptibles al ruido. Qiskit es capaz de tener en cuenta una amplia gama de métricas de calibración de dispositivos (consulta la figura siguiente) en su estrategia de compilación y puede seleccionar un conjunto óptimo de qubits en el cual ejecutar un circuito cuántico determinado. Además, Qiskit alberga una colección de técnicas de mitigación de ruido para extraer una representación fiel de la salida de un circuito cuántico.

Figura 5 Topología y tasas de error para el sistema de IBM Quantum ibmq_manhattan.#
A dónde ir a partir de aquí#
Esperamos haberle dado al lector una muestra de lo que la computación cuántica tiene para ofrecer y que estés ansioso por más. Si es así, existen varios recursos que pueden ser de interés:
Primeros pasos con Qiskit- Sumérjete en Qiskit.
Guía de campo para la computación cuántica : Una introducción gentil basada en la física escrita por algunos de los fundadores de la computación cuántica que hace uso del compositor interactivo de circuitos.
Qiskit textbook : A university quantum algorithms/computation course supplement based on Qiskit.