in

Introducción a la programación cuántica

12TF0dptrBgesUaQpibf3wA

Introducción a la programación cuántica

Tutorial de programación cuántica desde qubits hasta ejecutar programas cuánticos reales.

Quentin Truong

5 de agosto de 2019·15 min de lectura

Computadora cuántica

Q¡Las computadoras cuánticas existen! ¡Y también lo hace la programación cuántica! En este artículo, lo guiaré a través de todo lo que necesita saber para comenzar con la programación cuántica. Comenzaré con algo de contexto sobre cómo las computadoras cuánticas se diferencian de las computadoras como su computadora portátil, luego explicaré los fundamentos de la programación cuántica y terminaré con cómo se pueden ejecutar programas en una computadora cuántica real de forma gratuita hoy.

Antes de comenzar, tenga en cuenta que thEste artículo está destinado a personas que deseen conocer todos los detalles técnicos de la programación cuántica. Este artículo se basa en la base matemática de qubits, puertas cuánticas y diagramas de circuitos cuánticos. Este artículo no explicará los algoritmos cuánticos ni sus ventajas, ya que esos temas merecen sus propios artículos.

Dado que analizaremos las matemáticas subyacentes de la programación cuántica, los lectores deberán saber qué es un vector, una matriz, una combinación lineal y un número complejo. Recomiendo 3Blue1Brown para aprender álgebra lineal y BetterExplained para aprender qué es un número complejo.

Computadoras cuánticas

Comencemos por comprender qué son realmente las computadoras cuánticas y en qué se diferencian de otras computadoras.

Una computadora cuántica es una máquina que utiliza la mecánica cuántica para realizar cálculos.

Entonces, ¿en qué se diferencia de otras computadoras? Bueno, una computadora, en su forma más básica, es simplemente una máquina que realiza cálculos. Hay muchos tipos diferentes de computadoras. En los primeros días de las computadoras, en realidad teníamos computadoras mecánicas: Charles Babbage diseñó una máquina de este tipo para realizar cálculos de propósito general en 1837. Hoy en día, nuestras computadoras están basadas en electrónica digital y operan usando bits y puertas lógicas. Una computadora cuántica, por el contrario, utiliza la mecánica cuántica para realizar cálculos. En lugar de bits y puertas lógicas, las computadoras cuánticas utilizan qubits y puertas cuánticas.

Entonces, ¿qué es un qubit y una puerta cuántica? Físicamente, pueden ser cualquiera de muchas cosas diferentes: Google, IBM, Microsoft y Rigetti tienen sus propias implementaciones de qubits y puertas cuánticas. Por ahora, no nos preocuparemos por la naturaleza física de los qubits y las puertas cuánticas porque no es necesario cuando se aprende por primera vez sobre programación cuántica.

Programación cuántica

Antes de comenzar, le recomiendo encarecidamente que se acerque a la programación cuántica en un pizarra mental limpia. No busque cómo declarar y establecer variables, repetir el código, crear funciones, etc. Cualquier preconcepción que tenga sobre la programación probablemente no sé útil. La programación cuántica no es simplemente una forma de hacer que nuestros programas existentes se ejecuten más rápido: la programación cuántica es fundamentalmente diferente de la programación contemporánea.

Entendiendo los Qubits

Empecemos con qué un qubit es.

Un qubit es un vector de dos números complejos con unidad de longitud.

Caminemos por por qué los qubits son así y lo que realmente significa. Los Qubits son bastante diferentes de los bits. Para empezar, un bit es 0 o 1. No hay probabilidades aquí, o se sabe que es un 0 o se sabe que es un 1. Un qubit, por el contrario, es inherentemente probabilístico, lo que significa que dos idéntico los qubits pueden tener diferente valores una vez medidos! Tómese un momento para considerar realmente la gravedad de esto. Esto significa que la computación cuántica es intrínsecamente probabilística.

Ahora, aquí hay una segunda diferencia clave. Con bits, podemos leer el bit tantas veces como queramos sin afectar el estado del bit. Pero con qubits, una vez medidos, decora (pierde sus propiedades cuánticas) y colapsa a uno de dos estados medibles (de ahí el ‘bit’ en ‘qubit’). Por tanto, no podemos «desmedir» un qubit; una vez medida, la naturaleza cuántica es destruido y no se puede recuperar. Cuantificamos la naturaleza probabilística de medir un qubit usando dos números: | 𝛼 | ², la probabilidad de que el qubit se mida como 0, y | 𝛽 | ², la probabilidad de que el qubit se mida como 1.

Aunque | 𝛼 | ² y | 𝛽 | ² reflejan las probabilidades de cuál será el qubit medido como, pensamos en el interno estado de un qubit como dos ‘amplitudes de probabilidad’, 𝛼 y 𝛽. Estos son números complejos que definen una superposición entre 0 y 1 (una superposición es una combinación lineal) y no se puede medir.

En otras palabras, pensamos en un qubit como un vector de dos números complejos con unidad de longitud (la longitud del vector es igual a 1). Podemos expresar esto de manera concisa como matemática como se muestra en la siguiente imagen (el vector que contiene el alfa y el beta es el qubit; la barra sobre alfa y beta denota el conjugado complejo):

1*SoEKP7FkWD Id9oUhnlvSw

En resumen, los qubits son un vector de dos números complejos, 𝛼 y 𝛽, donde el vector tiene una unidad de longitud. La probabilidad de que el qubit se mida como 0 es igual a la magnitud al cuadrado de 𝛼, | 𝛼 | ². La probabilidad de que el qubit se mida como 1 es igual a la magnitud al cuadrado de 𝛽, | 𝛽 | ². El estado de un qubit, 𝛼 y 𝛽, no se puede medir. Solo se puede medir el valor en el que se colapsa un qubit.

Notación Qubit

A menudo denotamos qubits usando Notación de Dirac, también conocido como Notación bra-ket. Esta notación es solo una forma conveniente de escribir vectores. El sujetador representa los vectores de fila y se denota ⟨ ∣; el ket representa los vectores de columna y se denota ∣ ⟩. Por ejemplo, podemos escribir los estados ‘0’ y ‘1’ de un qubit en notación Bra-ket de la siguiente manera (¡tenga cuidado de no confundir lo que está dentro del bra / ket con lo que está dentro del vector!):

1*

Los Qubits pueden estar en estados puros o estados mixtos. Si el estado de un qubit se puede describir completamente usando una combinación lineal de ∣0⟩ y ∣1⟩, entonces decimos que está en estado puro. A menudo denotamos qubits de estado puro usando la siguiente notación:

Ket Psi = alfa Ket 0 + Beta Ket 1

ket Psi = alfa ket 0 + beta ket 1

Aquí hay algunos ejemplos de qubits de estado puro y abreviaturas comunes para denotarlos.

Ket +, Ket -, Ket i, Ket -i

Ket +, Ket -, Ket i, Ket -i

Otros qubits requieren mezclas de estados puros para describirlos completamente, por lo que los llamamos qubits de estado mixto. En otras palabras, un qubit de estado mixto se describe mediante una distribución de probabilidad sobre estados puros. Veremos un ejemplo de qubits de estado mixto más adelante en este artículo (lo señalaré).

Múltiples Qubits

Hasta ahora, solo hemos definido el estado de un solo qubit. ¿Qué hace el combinado estado de múltiples qubits ¿parece?

El estado combinado de múltiples qubits es el producto tensorial de todos los qubits.

No se preocupe si no sabe qué es un producto tensor; veremos un ejemplo (⊗ es el símbolo de la operación del producto tensorial).

1*wAxOjEYtLwwz0z I0hw2qQ

En general, podemos tensorizar el producto de dos matrices siguiendo dos pasos:

  1. Escalar multiplica cada elemento en la primera matriz por la segunda matriz completa
  2. Combinar las matrices resultantes según la posición original de sus elementos

Aquí hay un segundo ejemplo de cómo funciona para matrices bidimensionales:

Tensorproducto H

Tensorproducto H

También podemos denotar múltiples qubits en notación Bra-ket como ∣0⟩⊗∣1⟩, por ejemplo. Como abreviatura, podemos omitir la ⊗ y simplemente escribir ∣0⟩∣1⟩. Como abreviatura aún más corta, podemos escribir un solo ket, ∣01⟩.

Entendiendo las puertas cuánticas

Ahora consideremos qué una puerta cuántica es.

Una puerta cuántica es una matriz unitaria.

Consigamos algo de contexto para por qué las puertas cuánticas son matrices unitarias. En primer lugar, las puertas cuánticas se implementarán mediante dispositivos físicos, por lo que deben cumplir las leyes de la física cuántica. Una ley relevante de la física es que nunca se pierde información cuando se hace la transición entre puntos del pasado y del futuro¹. Esto se conoce como unitaridad. Dado que nuestras puertas cuánticas definen cómo hacemos la transición entre estados, también deben respetar la unitaridad.

En segundo lugar, tenga en cuenta que nuestras puertas cuánticas se aplicarán a los qubits. Aprendimos anteriormente que los qubits son en realidad solo vectores, y eso significa que las puertas cuánticas deben operar de alguna manera sobre los vectores. Afortunadamente, recordamos que una matriz es en realidad una transformación lineal de vectores.

Combinando estas dos ideas, pensamos en las puertas cuánticas como matrices unitarias. Una matriz unitaria es cualquier matriz cuadrada de números complejos tal que el transponer conjugar es igual a su inverso. Como repaso rápido, la transpuesta conjugada de una matriz se encuentra tomando el conjugado de cada elemento en la matriz (a + bia — bi), y luego tomando la transpuesta de la matriz (elemento ij → elemento ji). Normalmente denotamos la transposición conjugada con la daga, †.

Una observación clave sobre las matrices unitarias es que preservar la norma (longitud de un vector). Supongamos que permitimos puertas que cambiaron la norma, ¡entonces las probabilidades de nuestro qubit pueden sumar algo diferente a uno! Eso no tiene sentido ya que la suma de todas las probabilidades siempre debe ser igual a uno.

También observe que, por definición, las matrices unitarias tienen una inversa. Una implicación de esto es que no podemos «asignar» qubits a estados arbitrarios. Para entender por qué no, supongamos que teníamos una puerta cuántica que podía ‘asignar’ valores, por lo tanto, convertir cualquier vector de dos números complejos en un vector específico de dos números complejos. ¡Esta puerta cuántica tendría alguna representación subyacente como una matriz unitaria, y esa matriz tendría una inversa capaz de convertir un vector específico en cualquier estado en el que estuviera el qubit antes de la operación! ¡Pero el qubit podría haber estado en cualquier estado antes de la operación y no hay forma de saber cuál! Por tanto, no podemos «asignar» qubits a un estado arbitrario. En un nivel superior, el hecho de que todas las puertas cuánticas sean invertible es por eso que a menudo pensamos en la computación cuántica como una forma de computación reversible.

Por último, observe que debido a que nuestras puertas cuánticas son matrices unitarias, son cuadrado por definición, por lo que nuestras puertas cuánticas deben tener un igual número de qubits de entrada y salida (porque las matrices cuadradas mapean n vectores de base estándar en n columnas). Esto es bastante diferente de la mayoría de las puertas lógicas; por ejemplo, la puerta AND toma dos entradas y produce una salida.

Las puertas cuánticas H y CNOT

Ahora que sabemos un poco sobre lo que estamos trabajando, consideremos un ejemplo, el Puerta de Hadamard, H.

1*N dv2HFtw3OMA9qKOOU1Lw

Podemos comprobar que H es unitaria comprobando que la transpuesta conjugada es igual a su inversa, es decir, que H multiplicado por su transpuesta conjugada es igual a la matriz de identidad:

H multiplicado por la transpuesta conjugada de H es igual a I

H multiplicado por la transpuesta conjugada de H es igual a I

Otra puerta cuántica importante es la Puerta NO controlada, también conocido como CNOT. CNOT actúa sobre dos qubits, un qubit de control y un qubit objetivo. Podemos pensar en CNOT como un ‘declaración if’ – si el qubit de control es igual a 1, entonces CNOT aplica NOT (la puerta inversa) al qubit de destino (de ahí el nombre, Controlado NOT).

Aquí está la matriz que representa CNOT. Esta matriz trata el qubit de control como el valor más a la derecha dentro del Ket y el qubit objetivo como el valor más a la izquierda.

[[1, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0], [0, 1, 0, 0]]

[[1, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0], [0, 1, 0, 0]]

Veamos su efecto en ∣00⟩.

CNOT cet 00 = cet 00

CNOT cet 00 = cet 00

En este ejemplo, vemos que CNOT no modifica el valor de ∣00⟩. Y este es el comportamiento esperado, ya que CNOT solo invierte el objetivo si el control es 1.

Veamos su efecto en ∣01⟩.

Ket 01 de CNOT = Ket 11

CNOT Ket 01 = Ket 11

Aquí, podemos ver que el control es igual a 1, por lo que CNOT invierte el objetivo. Por tanto, el resultado es ∣11⟩.

Intente resolver los otros dos casos, ∣10⟩ y ∣11⟩. Debería encontrar que CNOT tiene el siguiente comportamiento:

  • ∣00⟩ -> ∣00⟩
  • ∣01⟩ -> ∣11⟩
  • ∣10⟩ -> ∣10⟩
  • ∣11⟩ -> ∣01⟩

Y observe que este es precisamente el comportamiento de aplicar NOT al bit de destino cuando el bit de control es 1.

En resumen, podemos pensar en las puertas cuánticas como matrices unitarias. Esta unitaridad …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

05WFEtwdQLCqwTZKBxaYvoR 1.1632312869.fit lim.size 1200x630

Informe: Apple está desarrollando un monitor de salud mental para iPhone

objectExplained

Objetos JavaScript