Circuitos
En ciencias de la computación, los circuitos son modelos de computación en los que la información es transportada por cables a través de una red de puertas, que representan operaciones sobre la información que llevan dichos cables. Los circuitos cuánticos son un modelo de computación específico basado en este concepto más general.
Aunque la palabra "circuito" suele referirse a un camino circular, los caminos circulares no están permitidos en los modelos de computación basados en circuitos que se estudian con más frecuencia. Es decir, normalmente consideramos circuitos acíclicos cuando pensamos en los circuitos como modelos computacionales. Los circuitos cuánticos siguen este patrón; un circuito cuántico representa una secuencia finita de operaciones que no puede contener bucles de retroalimentación.
Circuitos booleanos
A continuación se muestra un ejemplo de un circuito booleano (clásico), donde los cables transportan valores binarios y las puertas representan operaciones lógicas booleanas:
El flujo de información a lo largo de los cables va de izquierda a derecha: los cables en el lado izquierdo de la figura, etiquetados como e , son bits de entrada que pueden establecerse en cualquier valor binario que elijamos, y el cable en el lado derecho es la salida. Los cables intermedios toman los valores determinados por las puertas, que se evalúan de izquierda a derecha.
Las puertas son puertas AND (etiquetadas ), puertas OR (etiquetadas ) y puertas NOT (etiquetadas ). Las funciones calculadas por estas puertas probablemente serán familiares para muchos lectores, pero aquí se representan mediante tablas de valores:
Los dos pequeños círculos sólidos en los cables justo a la derecha de los nombres e representan operaciones de bifurcación (fan-out), que simplemente crean una copia del valor transportado por el cable en que aparecen, permitiendo que ese valor se introduzca en múltiples puertas. Las operaciones de bifurcación no siempre se consideran puertas en el contexto clásico; a veces se tratan como si fueran "gratuitas" en algún sentido. Sin embargo, cuando los circuitos booleanos se convierten en circuitos cuánticos equivalentes, sí necesitamos clasificar las operaciones de bifurcación explícitamente como puertas para gestionarlas y contabilizarlas correctamente.
A continuación se muestra el mismo circuito ilustrado en un estilo más habitual en ingeniería eléctrica, que utiliza los símbolos convencionales para las puertas AND, OR y NOT:
No utilizaremos este estilo ni estos símbolos de puerta en adelante, pero sí usaremos símbolos diferentes para representar puertas en los circuitos cuánticos, que iremos explicando a medida que los encontremos.
El circuito particular de este ejemplo calcula el OR exclusivo (o XOR por sus siglas en inglés), que se denota con el símbolo :
En el siguiente diagrama consideramos una sola elección para las entradas: e Cada cable está etiquetado con el valor que transporta para que puedas seguir las operaciones. El valor de salida es en este caso, que es el valor correcto para el XOR:
Las otras tres posibles configuraciones de entrada pueden verificarse de manera similar.
Otros tipos de circuitos
Como se sugirió anteriormente, la noción de circuito en ciencias de la computación es muy general. Por ejemplo, a veces se analizan circuitos cuyos cables transportan valores distintos de y , así como puertas que representan diferentes opciones de operaciones.
En los circuitos aritméticos, por ejemplo, los cables pueden transportar valores enteros mientras que las puertas representan operaciones aritméticas, como la suma y la multiplicación. La siguiente figura muestra un circuito aritmético que toma dos valores de entrada variables ( e ), así como una tercera entrada establecida en el valor Los valores transportados por los cables, como funciones de los valores e , se muestran en la figura.
También podemos considerar circuitos que incorporan aleatoriedad, como aquellos en que las puertas representan operaciones probabilísticas.
Circuitos cuánticos
En el modelo de circuito cuántico, los cables representan qubits y las puertas representan operaciones sobre estos qubits. Por ahora nos centraremos en las operaciones que hemos encontrado hasta el momento, a saber, las operaciones unitarias y las mediciones en la base estándar. A medida que aprendamos sobre otros tipos de operaciones cuánticas y mediciones, podremos enriquecer nuestro modelo en consecuencia.
A continuación se muestra un ejemplo sencillo de circuito cuántico:
En este circuito tenemos un solo qubit llamado , representado por la línea horizontal, y una secuencia de puertas que representan operaciones unitarias sobre este qubit. Al igual que en los ejemplos anteriores, el flujo de información va de izquierda a derecha — de modo que la primera operación realizada es una operación de Hadamard, la segunda es una operación , la tercera es otra operación de Hadamard y la operación final es una operación . Por lo tanto, aplicar el circuito completo equivale a aplicar la composición de estas operaciones, , al qubit
A veces puede ser conveniente indicar explícitamente los estados de entrada o salida de los circuitos. Por ejemplo, si aplicamos la operación al estado obtenemos el estado Esto se puede indicar de la siguiente manera:
Los circuitos cuánticos suelen comenzar con todos los qubits inicializados a como en este caso, pero también hay situaciones en las que los qubits de entrada se establecen inicialmente en estados diferentes. A continuación se muestra otro ejemplo de circuito cuántico, esta vez con dos qubits:
Como siempre, la puerta etiquetada hace referencia a una operación de Hadamard, mientras que la segunda puerta es una operación NOT controlada: el círculo sólido representa el qubit de control y el círculo que se asemeja al símbolo denota el qubit objetivo.
Antes de examinar este circuito con mayor detalle y explicar lo que hace, es imprescindible aclarar primero cómo se ordenan los qubits en los circuitos cuánticos. Esto está relacionado con la convención que usa Qiskit para nombrar y ordenar sistemas, que se menciónó brevemente en la lección anterior.
En Qiskit, el qubit más arriba en un diagrama de circuito tiene índice y corresponde a la posición más a la derecha en una tupla de qubits (o en una cadena, producto cartesiano o producto tensorial correspondiente a dicha tupla), el qubit segundo desde arriba tiene índice y corresponde a la posición segunda desde la derecha en una tupla, y así sucesivamente. El qubit más abajo, que tiene el índice más alto, corresponde por tanto a la posición más a la izquierda en una tupla. En particular, los nombres predeterminados de Qiskit para los qubits en un circuito de qubits están representados por la -tupla con siendo el qubit de arriba y el de abajo en los diagramas de circuito cuántico.
Ten en cuenta que esto es una inversión de la convención más común para ordenar qubits en circuitos, y es una fuente frecuente de confusión. Se puede encontrar más información sobre esta convención de ordenamiento en la página de documentación Ordenamiento de bits en Qiskit.
Aunque a veces nos apartamos de los nombres predeterminados específicos que usa Qiskit para los qubits, siempre seguiremos la convención de ordenamiento descrita anteriormente al interpretar los diagramas de circuito a lo largo de este curso. Así, nuestra interpretación del circuito anterior es que describe una operación sobre un par de qubits Si la entrada al circuito es un estado cuántico , por ejemplo, esto significa que el qubit inferior comienza en el estado y el qubit superior comienza en el estado
Para entender lo que hace el circuito, podemos recorrerlo de izquierda a derecha a través de sus operaciones.
-
La primera operación es una operación de Hadamard sobre :
Al aplicar una puerta a un solo qubit como esta, no ocurre nada en los demás qubits (que en este caso es solo uno). Que no ocurra nada equivale a que se realice la operación identidad. El rectángulo punteado en la figura anterior representa por tanto esta operación:
Observa que la matriz identidad está a la izquierda del producto tensorial y está a la derecha, lo cual es coherente con la convención de ordenamiento de Qiskit.
-
La segunda operación es la operación NOT controlada, donde es el control y es el objetivo:
La acción de la puerta NOT controlada sobre los estados de la base estándar es la siguiente:
Dado que ordenamos los qubits como con en la parte inferior y en la parte superior de nuestro circuito, la representación matricial de la puerta NOT controlada es esta:
La operación unitaria implementada por el circuito completo, a la que llamaremos , es la composición de las operaciones:
En particular, recordando nuestra notación para los estados de Bell,
encontramos que
Este circuito nos da por tanto una manera de crear el estado si lo ejecutamos sobre dos qubits inicializados a De manera más general, nos proporciona una forma de convertir la base estándar en la base de Bell. (Nótese que, aunque no es importante para este ejemplo, el factor de fase en el último estado, podría eliminarse si quisiéramos haciendo una pequeña modificación al circuito. Por ejemplo, podríamos añadir una puerta controlada al principio, que es similar a una puerta NOT controlada excepto que se aplica una operación al qubit objetivo en lugar de una operación NOT cuando el control está en Alternativamente, podríamos añadir una puerta swap al final. Cualquiera de las dos opciones elimina el signo negativo sin afectar la acción del circuito sobre los otros tres estados de la base estándar.)
En general, los circuitos cuánticos pueden contener cualquier número de cables de qubit. También podemos incluir cables de bit clásico, que se indican con líneas dobles, como en este ejemplo:
Aquí tenemos una puerta de Hadamard y una puerta NOT controlada sobre dos qubits e , igual que en el ejemplo anterior. También tenemos dos bits clásicos, y , así como dos puertas de medición. Las puertas de medición representan mediciones en la base estándar: los qubits cambian a sus estados post-medición, mientras que los resultados de la medición se sobrescriben en los bits clásicos a los que apuntan las flechas.
A menudo es conveniente representar una medición como una puerta que toma un qubit como entrada y produce un bit clásico como salida (en lugar de producir el qubit en su estado post-medición y escribir el resultado en un bit clásico separado). Esto significa que el qubit medido ha sido descartado y puede ignorarse con seguridad a partir de ese momento, ya que su estado habrá cambiado a o dependiendo del resultado de la medición.
Por ejemplo, el siguiente diagrama de circuito representa el mismo proceso que el del diagrama anterior, pero donde descartamos e después de medirlos:
A medida que avance el curso, veremos más ejemplos de circuitos cuánticos, que normalmente son más complejos que los ejemplos sencillos anteriores. A continuación se muestran algunos ejemplos de símbolos utilizados para denotar puertas que aparecen habitualmente en los diagramas de circuito:
-
Las puertas de un solo qubit se representan generalmente como cuadrados con una letra que indica qué operación es, como aquí:
Las puertas NOT (o equivalentemente, puertas ) también se denotan a veces mediante un círculo alrededor de un signo más:
-
Las puertas swap se denotan de la siguiente manera:
-
Las puertas controladas, es decir, puertas que describen operaciones unitarias controladas, se denotan mediante un círculo relleno (que indica el control) conectado por una línea vertical a la operación que se está controlando. Por ejemplo, las puertas NOT controladas, las puertas NOT controladas-controladas (o Toffoli) y las puertas swap controladas (Fredkin) se denotan así:
-
Las operaciones unitarias arbitrarias sobre múltiples qubits pueden verse como puertas. Se representan mediante rectángulos etiquetados con el nombre de la operación unitaria. Por ejemplo, aquí se muestra la representación de una operación unitaria (no especificada) como puerta, junto con una versión controlada de dicha puerta: