Regístrate | Conectar
El Tamiz Libros Recursos Series Únete 3 Users Online
Skip to content

Computación Cuántica III – Las puertas lógicas de un qubit




En la entrada anterior vimos lo que era un qubit, y que su estado general se podía escribir como a|0>+b|1>; ahora vamos a ver las primeras puertas lógicas que usaremos en los circuitos cuánticos, las que solo tienen un qubit de entrada (y uno de salida). Pero primero vamos a repasar las puertas lógicas clásicas de un bit, aunque J ya nos habló de ellas. Solamente hay cuatro puertas lógicas de un bit, y tres de ellas apenas pueden ganarse el nombre de puerta:

  1. La puerta NO – si a la entrada ponemos un 0, a la salida nos da un 1; si a la entrada ponemos un 1, a la salida nos da un 0.
  2. La puerta  – si a la entrada ponemos un 0, a la salida nos da un 0; si a la entrada ponemos un 1, a la salida nos da un 1.
  3. La puerta UNO – si a la entrada ponemos un 0, a la salida nos da un 1; si a la entrada ponemos un 1, a la salida nos da un 1.
  4. La puerta CERO – si a la entrada ponemos un 0, a la salida nos da un 0; si a la entrada ponemos un 1, a la salida nos da un 0.

Y ya está; no hay más posibles puertas que tengan un bit a la entrada y un bit a la salida. Y como se puede ver, las tres últimas no hacen nada interesante; sólo la puerta NO es una puerta útil. Sin embargo, en computación cuántica no hay cuatro posibles puertas de un bit… hay infinitas. Y hay unas cuantas que son útiles, no solamente una.

En primer lugar, un par de apuntes que vamos a necesitar. La computación cuántica necesita ser reversible. Es decir, para cada puerta tiene que haber otra[1] que “deshaga” lo que hizo la primera. Por ejemplo, la puerta NO es reversible. ¿Por qué? Porque si ponemos una puerta NO detrás de otra obtenemos lo mismo que pongamos en la entrada. Es decir, si a la entrada de la primera ponemos un 0, a la salida tendremos un 1. Pero la salida de esta primera puerta es la entrada de la segunda, por lo que si en esta segunda puerta entra un 1, sale un 0, que es lo que teníamos al principio. Pero si metemos un 1 en la primera, a la salida tenemos un 0. Por lo que en la segunda entra un 0 y a la salida tenemos… un 1. Igual que al principio. Por lo tanto podemos deshacer lo que hace una puerta NO, y lo que usamos para deshacerlo es otra puerta NO. Así, una puerta NO es reversible. ¿Lioso? Mira este dibujo y igual te queda más claro:

Reversibilidad de la puerta NO

Reversibilidad de la puerta NO. Poniendo detrás de una puerta NO otra igual, deshacemos lo que hizo la primera. Por esta razón podemos decir que la puerta NO es reversible.

Pero en cambio la puerta UNO no lo es: tanto si en la entrada tenemos un 0 como si tenemos un 1, a la salida tenemos un 1. ¿Qué puerta podría diferenciar entre los dos unos de la salida, el que aparece cuando ponemos un 0 y el que aparece cuando ponemos un 1? Los dos son exactamente iguales, no hay nada que los diferencie, así que no existe ninguna puerta que a partir de uno de ellos nos de un dé un 0 y a partir del otro nos dé un 1… ¡porque son iguales! Con la información que tenemos a la salida de la puerta no podemos averiguar qué había en la entrada; hemos perdido la información que le dimos al aplicar la puerta.[2] Por tanto la puerta UNO no es reversible y no podrá tener un equivalente en computación cuántica.

De las puertas lógicas de un bit, la NO y la son reversibles, pero la UNO y la CERO, no. “Pero bueno, no hay problema, ¿no? Hemos dicho que esas dos no son importantes.” Pues… el problema aparece cuando vamos a puertas de más de un bit. La puerta Y, la puerta O y, en general, casi todas las puertas que se usan en electrónica, no son reversibles. Y como no son reversibles no podremos usarlas en computación cuántica, lo cual es una pena porque llevamos mucho tiempo utilizándolas y las conocemos muy bien, y sabemos usarlas muy bien. Pero la buena noticia es que hay muchas otras posibles puertas que sí lo son, y las iremos viendo.

Relacionado con lo anterior, una puerta cuántica necesita tener tantas entradas como salidas. Si lo piensas un poco verás que es una condición necesaria para cumplirse la premisa anterior. Si tuviera más entradas que salidas, perderíamos información, información que no podríamos recuperar con la segunda puerta, por lo que la puerta no sería reversible – y ya hemos dejado claro que la puerta tiene que ser reversible.[3] Si por el contrario la puerta tuviera más salidas que entradas, aparentemente no pasaría nada; sí, estamos dejando en algunos sitios la información duplicada, pero podemos recuperarla, así que todo bien, ¿no? Pues no, porque hay un problema: la puerta con la que recuperamos la información también tiene que tener una puerta que deshaga lo que hace.

Se entiende mejor con un ejemplo: imagina que nuestra primera puerta tiene un bit de entrada y cinco de salida. Pues no pasa nada, repartimos la información entre los cinco y todo bien. Pero para recuperar la información del principio necesitamos una puerta con solamente un bit de salida (porque es lo que teníamos al principio). Entonces tiene que ser una puerta que tenga cinco bits de entrada, porque la anterior tiene cinco de salida, pero sólo uno de salida. Pero ¿no habíamos dicho que la puerta no podía tener más bits de entrada que de salida? Pues entonces esta puerta no puede existir, y si no existe esa puerta… tampoco puede existir la que tiene un bit de entrada y cinco de salida. ¿Por qué? Porque la puerta no puede existir si no existe otra que deshaga lo que hace. Entonces, si la puerta no puede tener más entradas que salidas, y no puede tener más salidas que entradas, solamente nos queda una opción: que tenga exactamente tantas entradas como salidas. Así que una puerta con una entrada solamente puede tener una salida: ni más, ni menos. Una puerta con dos entradas solamente puede tener dos salidas: ni más, ni menos. Y así sucesivamente.

Puerta "1a5"

Puerta “1a5″: Parece que podríamos tener una puerta con más salidas que entradas… pero entonces necesitaríamos tener una puerta con más entradas que salidas, que ya vimos que no puede existir. Y eso hace que tampoco pueda existir una con más salidas que entradas.

Vistos estos tecnicismos, empecemos ahora con las puertas de un qubit. Recuerda que en lugar de bits tenemos que volver a usar qubits, que tienen una mezcla de 1 y 0: un qubit era a|0>+b|1>, lo que quería decir, resumiendo la entrada anterior, que hay una probabilidad |a|^2 (es decir, el cuadrado del módulo de a) de que valga 0, y una probabilidad |b|^2 (es decir, el cuadrado del módulo de b) de que valga 1.

  • La puerta I (identidad) – Nos deja en la salida lo mismo que en la entrada: si ponemos en la entrada el qubit a|0>+b|1>, nos pone en la salida el qubit a|0>+b|1> (es decir, el mismo, sin cambiarlo). Esta puerta es la equivalente a la puerta en computación clásica, y es incluso menos útil que allí. Solamente se usa para hacer demostraciones matemáticas, pero la pongo aquí por si resulta útil en el futuro.
  • La puerta X (bit flip) – Es la equivalente a la puerta NO. Si el qubit de entrada es |0>, el de salida es |1>, y viceversa. Si el qubit que entra es el qubit general a|0>+b|1>, el de salida será a|1>+b|0>, o escrito de la forma más usual, b|0>+a|1>.[4] El nombre alternativo de esta puerta, bit flip, se debe a que “cambia” (flip) los bits, es decir, donde había un 0 pone un 1 y donde había un 1 pone un 0, exactamente como hacía la puerta NO en computación clásica. La puerta intercambia las probabilidades de tener un 1 y de tener un 0; si al principio teníamos un 90% de probabilidades de tener un 0, y un 10% de tener un 1, ahora tendremos un 90% de probabilidades de tener un 1 y un 10% de probabilidades de tener un 0.
  • La puerta Z   (phase flip) –[5] Si el qubit que entra es un |0> no hace nada, pero si el que entra es un |1> le cambia el signo, y en la salida tenemos un -|1>. En general, si entra un qubit a|0>+b|1>, sale un qubit a|0>-b|1>. Esta puerta no tiene un equivalente clásico. De hecho, lo más parecido a un equivalente clásico sería la puerta , igual que la identidad. El nombre en inglés de esta puerta, phase flip, se debe a que cambia la “fase” (para los físicos: la fase relativa de cada estado; para los no físicos: el signo) del qubit. Esta puerta no cambia las probabilidades de que al medir el qubit hallemos un 0 o un 1: el valor a lo deja sin cambiar, por lo que la probabilidad de medir un 0 sigue siendo la misma, |a|^2; el valor b lo cambia por su opuesto… pero el cuadrado de su módulo sigue siendo el mismo, por lo que la probabilidad sigue siendo |b|^2. Es como si no cambiara nada, parece inútil la puerta, entonces… pero es que la fase (el signo) se puede utilizar en los cálculos.
  • La puerta H  (puerta de Hadamard) – Convierte el qubit |0> en el qubit |+> (que, recuerdo de la entrada anterior, es solamente una forma fácil de llamar al qubit \frac{1}{\sqrt{2}}|0>+\frac{1}{\sqrt{2}}|1>) y el qubit  |1> en el qubit |-> (que igual que el |+> es una forma fácil de llamar a otro qubit, en este caso el \frac{1}{\sqrt{2}}|0>-\frac{1}{\sqrt{2}}|1>, es decir, igual que el |+> pero con el signo cambiado). Esta puerta es MUY importante, probablemente la más importante de las que veremos hoy. Y eso que a primera vista lo que hace es una tontería, pero tiene muchísimas aplicaciones en muchos circuitos; casi no hay ningún algoritmo cuántico que no la use. La transformación del qubit general es complicada a primera vista, pero que no es más que combinar lo anterior: el qubit a|0>+b|1> se convierte en \frac{a+b}{\sqrt{2}}|0>+\frac{a-b}{\sqrt{2}}|1>, pero lo bueno es que este qubit escrito usando |+> y |-> se vuelve mucho más simple: a|+>+b|->, como se podía esperar de la definición del principio.

Estas son las puertas más importantes de un qubit, y además las que sólo necesitan números reales para definirse. Hay una relación muy bonita además entre las puertas X, Z y H y los qubits |0>, |1>, |+> y |->:

Relación entre X, Z y H

La casi mágica relación entre X, Z y H.

Una puerta X convierte un qubit |0> en un qubit |1> y viceversa, como ya vimos; también vimos que la H convierte el |0> en |+> y el |1> en |->.  Pero si pensamos un poco en cómo funcionan las puertas Z y H veremos que Z convierte |+> en |-> (y viceversa), y que H funciona también en sentido inverso, convirtiendo |+> en |0> y |-> en |1>. Esto nos va a dar mucho juego a la hora de diseñar algoritmos.

Una cosa que a lo mejor habéis notado es que todas estas puertas son sus propias inversas (se “deshacen” a sí mismas). Aplicar dos veces X nos deja como estábamos al principio, lo mismo con Z y lo mismo con H. Esto podría haceros pensar que esto ocurre así siempre, pero no; la mayoría de las puertas no tienen esa propiedad.

Hay otras puertas de un qubit, pero son mucho menos utilizadas y, además, en general necesitan números complejos y he dicho que voy a intentar no utilizarlos. Principalmente son cuatro; se usan en algunos algoritmos pero no veremos muchas de ellas durante la serie. No obstante, las dejo aquí para quien quiera más información:

  • La puerta Y – Ésta ni tiene nombre propio siquiera, pero complementa a las puertas I, X y Z. Si a la entrada ponemos el qubit a|0>+b|1>, a la salida nos da b|0>-a|1>, por lo que funciona como una combinación de las puertas X y Z.[6]
  • La puerta S (phase gate, no confundir con phase flip) – Cambia a|0>+b|1> por a|0>+b i |1>. Si se aplica dos veces seguidas la puerta S se obtiene una puerta Z, como se puede comprobar fácilmente.
  • La puerta T  (puerta π/8, “pi octavos”) – Cambia a|0>+b|1> por a|0>+b\frac{1+i}{\sqrt{2}}|1>. Si se aplica dos veces se obtiene una puerta S.
  • La puerta R (phase shift, no confundir con phase flip ni phase gate[7] ) – Cambia a|0>+b|1> por a|0>+b\frac{cos(\theta)+i sin(\theta)}{\sqrt{2}}|1>, donde θ es un ángulo cualquiera que se le da externamente. Puede simular tanto la puerta Z, como la S, como la T y es muy importante en la llamada Transformada de Fourier Cuántica (QFT, por sus siglas en inglés).
  • La puerta general (escrita normalmente como U): No es ninguna puerta en particular, es solamente una notación para llamar a cualquier puerta de un qubit, sea de las que hemos visto o no. Resulta útil en algunos circuitos en los que hay una parte que no especificamos, porque según el uso que le demos será de una manera o de otra; en esos casos utilizamos esta puerta.

Y hasta aquí las puertas lógicas de un qubit. Sé que el artículo ha resultado un poco farragoso, pero con que te quedes con el hecho de que las puertas siempre tienen que tener el mismo número de entradas que de salidas, y con el funcionamiento de la relación entre X, Z y H y |0>, |1>, |+> y |->, tienes ya todo lo que necesitas para continuar. En la próxima entrega, qué ocurre cuando tenemos más de un qubit.

  1. que podría ser la misma []
  2. En efecto, en computación cuántica no podemos perder información… usando puertas; hay otro método para perder información, que ya veremos []
  3. Si la puerta tiene n entradas y m salidas, estamos mapeando de 2^n valores a 2^m; si m<n, tiene que haber varios valores de la entrada que se mapeen en el mismo valor de salida, porque lo que destruimos la información que diferencia uno del otro []
  4. Siempre intentamos mantener ordenados los qubits, nos evitará perdernos cuando estemos en circuitos con más de un qubit. []
  5. Si has dado algún curso de cuántica tal vez te hayas dado cuenta de que las puertas tienen los nombres de las matrices de Pauli y te estés esperando ya la puerta Y – y no te equivocas, hay una relación entre ambas cosas: cada puerta de un qubit puede describirse como una matriz unitaria de 2×2, y las matrices de Pauli más la matriz identidad forman una base para estas matrices. []
  6. En realidad esto sólo es así cuando trabajamos con un único qubit. Cuando hay más, lo que daría en la salida sería b i|0>-a i|1>; cuando hay solo un qubit puede quitarse el i porque es lo que se llama una “fase global”, pero cuando hay más, esa fase sí es importante. []
  7. Sí, a veces somos así de poco originales con los nombres. []

Sobre el autor:

Carlo ( )

 

{ 1 } Comentarios

  1. Gravatar Argus | 08/04/2014 at 02:22 | Permalink

    Esto se pone interesante. Dices que en la entrada anterior se vio que el qubit |+> es una forma fácil de llamar al qubit 1/√2|0>1/√2|1>, pero no encuentro esto en la entrada anterior. ¿Me he saltado algún post?

    Por todo esto veo que se puede representar un estado con un vector módulo 1 y las puertas modifican el ángulo o lo reflejan respecto a diferentes ejes. Pero si esto es así tengo la siguiente duda: ¿Qué hace gráficamente la puerta H?

{ 1 } Trackback

  1. [...] https://eltamiz.com/elcedazo/2014/04/05/computacion-cuantica-iii-las-puertas-logicas-de-un-qubit/ [...]

Escribe un comentario

Tu dirección de correo no es mostrada. Los campos requeridos están marcados *

Al escribir un comentario aquí nos otorgas el permiso irrevocable de reproducir tus palabras y tu nombre/sitio web como atribución.