Saltar al contenido principal

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:

Ejemplo de un circuito booleano

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 X\mathsf{X} e Y\mathsf{Y}, 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 \wedge), puertas OR (etiquetadas \vee) y puertas NOT (etiquetadas ¬\neg). Las funciones calculadas por estas puertas probablemente serán familiares para muchos lectores, pero aquí se representan mediante tablas de valores:

a¬a0110abab000010100111abab000011101111\begin{array}{c} \begin{array}{c|c} a & \neg a\\ \hline 0 & 1\\ 1 & 0\\ \end{array}\\ \\ \\ \end{array} \qquad\quad \begin{array}{c|c} ab & a \wedge b\\ \hline 00 & 0\\ 01 & 0\\ 10 & 0\\ 11 & 1 \end{array} \qquad\quad \begin{array}{c|c} ab & a \vee b\\ \hline 00 & 0\\ 01 & 1\\ 10 & 1\\ 11 & 1 \end{array}

Los dos pequeños círculos sólidos en los cables justo a la derecha de los nombres X\mathsf{X} e Y\mathsf{Y} 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:

Circuito booleano en estilo clásico

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 \oplus:

abab000011101110\begin{array}{c|c} ab & a \oplus b\\ \hline 00 & 0\\ 01 & 1\\ 10 & 1\\ 11 & 0 \end{array}

En el siguiente diagrama consideramos una sola elección para las entradas: X=0\mathsf{X}=0 e Y=1.\mathsf{Y}=1. Cada cable está etiquetado con el valor que transporta para que puedas seguir las operaciones. El valor de salida es 11 en este caso, que es el valor correcto para el XOR: 01=1.0 \oplus 1 = 1.

Evaluando un circuito booleano

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 00 y 11, 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 (xx e yy), así como una tercera entrada establecida en el valor 1.1. Los valores transportados por los cables, como funciones de los valores xx e yy, se muestran en la figura.

Ejemplo de circuito aritmético

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:

Circuito cuántico simple

En este circuito tenemos un solo qubit llamado X\mathsf{X}, 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 SS, la tercera es otra operación de Hadamard y la operación final es una operación TT. Por lo tanto, aplicar el circuito completo equivale a aplicar la composición de estas operaciones, THSHT H S H, al qubit X.\mathsf{X}.

A veces puede ser conveniente indicar explícitamente los estados de entrada o salida de los circuitos. Por ejemplo, si aplicamos la operación THSHT H S H al estado 0,\vert 0\rangle, obtenemos el estado 1+i20+121.\frac{1+i}{2}\vert 0\rangle + \frac{1}{\sqrt{2}} \vert 1 \rangle. Esto se puede indicar de la siguiente manera:

Circuito cuántico simple evaluado

Los circuitos cuánticos suelen comenzar con todos los qubits inicializados a 0,\vert 0\rangle, 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:

Circuito cuántico que crea un e-bit

Como siempre, la puerta etiquetada HH 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 \oplus 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.

Convención de ordenamiento de qubits de Qiskit para circuitos

En Qiskit, el qubit más arriba en un diagrama de circuito tiene índice 00 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 11 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 nn qubits están representados por la nn-tupla (qn1,,q0),(\mathsf{q_{n-1}},\ldots,\mathsf{q_{0}}), con q0\mathsf{q_{0}} siendo el qubit de arriba y qn1\mathsf{q_{n-1}} 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 q0,,qn1\mathsf{q_{0}},\ldots,\mathsf{q_{n-1}} 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 (X,Y).(\mathsf{X},\mathsf{Y}). Si la entrada al circuito es un estado cuántico ψϕ\vert\psi\rangle \otimes \vert\phi\rangle, por ejemplo, esto significa que el qubit inferior X\mathsf{X} comienza en el estado ψ\vert\psi\rangle y el qubit superior Y\mathsf{Y} comienza en el estado ϕ.\vert\phi\rangle.

Para entender lo que hace el circuito, podemos recorrerlo de izquierda a derecha a través de sus operaciones.

  1. La primera operación es una operación de Hadamard sobre Y\mathsf{Y}:

    Primera operación del creador de e-bit

    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:

    IH=(121200121200001212001212). \mathbb{I}\otimes H = \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & 0 & 0\\[2mm] \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & 0\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{pmatrix}.

    Observa que la matriz identidad está a la izquierda del producto tensorial y HH está a la derecha, lo cual es coherente con la convención de ordenamiento de Qiskit.

  2. La segunda operación es la operación NOT controlada, donde Y\mathsf{Y} es el control y X\mathsf{X} es el objetivo:

    Segunda operación del creador de e-bit

    La acción de la puerta NOT controlada sobre los estados de la base estándar es la siguiente:

    Puerta NOT controlada

    Dado que ordenamos los qubits como (X,Y),(\mathsf{X}, \mathsf{Y}), con X\mathsf{X} en la parte inferior y Y\mathsf{Y} en la parte superior de nuestro circuito, la representación matricial de la puerta NOT controlada es esta:

    (1000000100100100). \begin{pmatrix} 1 & 0 & 0 & 0\\[2mm] 0 & 0 & 0 & 1\\[2mm] 0 & 0 & 1 & 0\\[2mm] 0 & 1 & 0 & 0 \end{pmatrix}.

La operación unitaria implementada por el circuito completo, a la que llamaremos UU, es la composición de las operaciones:

U=(1000000100100100)(121200121200001212001212)=(121200001212001212121200).U = \begin{pmatrix} 1 & 0 & 0 & 0\\[2mm] 0 & 0 & 0 & 1\\[2mm] 0 & 0 & 1 & 0\\[2mm] 0 & 1 & 0 & 0 \end{pmatrix} \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & 0 & 0\\[2mm] \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & 0\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{pmatrix} = \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & 0 & 0\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}}\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\[2mm] \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & 0 \end{pmatrix}.

En particular, recordando nuestra notación para los estados de Bell,

ϕ+=1200+1211ϕ=12001211ψ+=1201+1210ψ=12011210,\begin{aligned} \vert \phi^+ \rangle & = \frac{1}{\sqrt{2}} \vert 0 0 \rangle + \frac{1}{\sqrt{2}} \vert 1 1 \rangle \\[2mm] \vert \phi^- \rangle & = \frac{1}{\sqrt{2}} \vert 0 0 \rangle - \frac{1}{\sqrt{2}} \vert 1 1 \rangle \\[2mm] \vert \psi^+ \rangle & = \frac{1}{\sqrt{2}} \vert 0 1 \rangle + \frac{1}{\sqrt{2}} \vert 1 0 \rangle \\[2mm] \vert \psi^- \rangle & = \frac{1}{\sqrt{2}} \vert 0 1 \rangle - \frac{1}{\sqrt{2}} \vert 1 0 \rangle, \end{aligned}

encontramos que

U00=ϕ+U01=ϕU10=ψ+U11=ψ.\begin{aligned} U \vert 00\rangle & = \vert \phi^+\rangle\\ U \vert 01\rangle & = \vert \phi^-\rangle\\ U \vert 10\rangle & = \vert \psi^+\rangle\\ U \vert 11\rangle & = -\vert \psi^-\rangle. \end{aligned}

Este circuito nos da por tanto una manera de crear el estado ϕ+\vert\phi^+\rangle si lo ejecutamos sobre dos qubits inicializados a 00.\vert 00\rangle. 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 1-1 en el último estado, ψ,-\vert \psi^-\rangle, podría eliminarse si quisiéramos haciendo una pequeña modificación al circuito. Por ejemplo, podríamos añadir una puerta ZZ controlada al principio, que es similar a una puerta NOT controlada excepto que se aplica una operación ZZ al qubit objetivo en lugar de una operación NOT cuando el control está en 1.1. 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:

Ejemplo de circuito con mediciones

Aquí tenemos una puerta de Hadamard y una puerta NOT controlada sobre dos qubits X\mathsf{X} e Y\mathsf{Y}, igual que en el ejemplo anterior. También tenemos dos bits clásicos, A\mathsf{A} y B\mathsf{B}, 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 0\vert 0\rangle o 1\vert 1\rangle 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 X\mathsf{X} e Y\mathsf{Y} después de medirlos:

Ejemplo de circuito con mediciones compacto

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í:

    Puertas de un solo qubit

    Las puertas NOT (o equivalentemente, puertas XX) también se denotan a veces mediante un círculo alrededor de un signo más:

    Puerta NOT

  • Las puertas swap se denotan de la siguiente manera:

    Puerta swap

  • 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í:

    Puerta controlada

  • 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 UU (no especificada) como puerta, junto con una versión controlada de dicha puerta:

    Puerta unitaria arbitraria junto con versión controlada