Introducción a la Computación Cuántica con Qiskit (Parte 6)

Introducción a la Computación Cuántica con Qiskit

En el quinto artículo de esta serie hicimos un repaso general de los conceptos más importantes desarrollados hasta ese momento, poniendo especial foco en cómo codificar 1 qubit. Eso nos llevó a plantearnos cómo se conseguiría llevar a cabo la representación de estados cuánticos compuestos por varios qubits. Eso, a su vez, abrió el camino para el tema en el que vamos a centrarnos en esta publicación: el fenómeno conocido como entanglement. Vamos a incorporar un concepto más a nuestra mochila. ¡Pero tranquilos que no será nada pesada!

Entanglement

Vamos a comenzar de la misma forma que lo hicimos en el artículo anterior, recapitulando los puntos claves que se trataron en él. El primer tema que pudimos comprobar fue que la forma de construir estados cuánticos formados por varios qubits era mediante la operación del producto de tensores o producto Kronecker de los qubits individuales. Suponiendo que tenemos 2 qubits llamados |(|)>  y |(|)‘>:

Introducción a la Computación Cuántica con Qiskit

El resultado de realizar el producto de tensores o producto Kronecker de esos 2 qubits será:

Introducción a la Computación Cuántica con QiskitSi estamos trabajando con estados cuánticos compuestos por 2 qubits entonces tendremos los siguientes vectores de base canónica: |00>, |01>, |10> y |11>  en un espacio de números complejos de 4 dimensiones  

Introducción a la Computación Cuántica con Qiskit

Espacios de alta dimensionalidad

También introdujimos en el artículo anterior la idea de que cuando construimos espacios de alta dimensionalidad empleando la operación del producto de tensores de los qubits individuales no todos los vectores de ese espacio resultante pueden ser obtenidos mediante el producto Kronecker de sus componentes.   

La mejor forma de entender algo es mediante ejemplos. Por ello, vamos a intentar demostrar ese concepto partiendo del siguiente estado de superposición de los kets |00> y |11>:

Introducción a la Computación Cuántica con Qiskit

Como el vector resultante es una combinación lineal de 2 de los vectores canónicos (|00> y |11>) del espacio de los números complejos de 4 dimensiones, podemos decir que este vector pertenece a dicho espacio de Introducción a la Computación Cuántica con Qiskit . El problema es que esto no puede ser escrito como el producto Kronecker |(|)>⊕|(|)‘> para cualesquiera  Introducción a la Computación Cuántica con Qiskit.

Para demostrarlo, vamos a escribir como un  producto Kronecker de sus componentes el estado cuántico Introducción a la Computación Cuántica con Qiskit

Posteriormente, vamos a expandir el resultado sobre los vectores de base canónica de los complejos de 4 dimensiones:

Introducción a la Computación Cuántica con Qiskit

Podemos ver que no aparecen los kets |01> ni |10> en esta parte de la expresión:

Introducción a la Computación Cuántica con Qiskit

Por lo que llegamos a la conclusión de que a0b1=0 y a1b0=0. El problema es que eso lleva a una contradicción, ya que, como a1b1=1 de ahí extraemos que ano puede ser 0 por lo que deducimos que bdebe ser 0. Pero eso tampoco puede ser posible debido a que como a0b0=1 entonces b0 no podría ser 0.

Entangled states

Esto nos lleva a que los estados que no pueden ser escritos como un producto de tensores reciben el nombre de entangled states o estados entrelazados. Es un fenómeno físico que indica fuertes correlaciones entre variables aleatorias, por ejemplo, 2 qubits aunque dichos qubits estén separados por grandes distancias. De esta forma, estas correlaciones no se explican mediante la mecánica clásica. Esta propiedad nos permite, entre otras cosas, poder medir uno de los qubits entrelazados e instantáneamente poder determinar el valor del otro aunque ese otro qubit se encuentre en un estado probabilístico.

A continuación, vamos a ver cómo, empleando Qiskit, crear el estado :

Introducción a la Computación Cuántica con Qiskit

En este ejemplo, disponemos de 2 registros cuánticos qr[0] y qr[1] cada uno de ellos inicializado por defecto en el ket |0> y de 2 registros clásicos cr[0] y cr[1].  Creamos un circuito cuántico que dispone de esos 2 registros cuánticos qr y de los 2 registros clásicos cr. Una vez realizadas esas definiciones, aplicaremos la puerta Hadamard sobre el qubit 0 (el de más a la izquierda) siendo su definición:

Introducción a la Computación Cuántica con Qiskit

Su definición gráfica y su matriz son las siguientes:

Introducción a la Computación Cuántica con Qiskit

El estado parcial después de aplicar esa puerta Hadamard sobre el qubit 0 será

Introducción a la Computación Cuántica con Qiskit

A continuación se aplicará sobre el resultado del paso anterior la puerta cx o también conocida como CNOT o controlled NOT. Esta puerta emplea 2 qubits, uno de control y otro denominado target. De esta forma, si el qubit de control es 1 entonces aplicará la puerta NOT o también conocida como x sobre el otro qubit (target). El efecto que provoca es el siguiente en caso de que el qubit de control sea el de más a la izquierda:

Introducción a la Computación Cuántica con Qiskit

Y aquí podemos ver su definición en forma de matriz y gráfica:

Introducción a la Computación Cuántica con Qiskit

Por lo que el resultado después de aplicar la puerta cx será Introducción a la Computación Cuántica con Qiskit estando los estados |00> y |11> en superposición. Esto lo podemos comprobar en el histograma. Allí, cada uno de los estados aparece aproximadamente la mitad de las 100 veces (parámetro shots) que se repite la ejecución del circuito cuántico.

Siguiendo este procedimiento vamos ver cómo se implementaría el estado:

Introducción a la Computación Cuántica con Qiskit

Conclusión

Hasta aquí este artículo. Resumiendo, además de trabajar con estados formados por varios qubits y de introducir el concepto de entanglement, hemos empezado a modificar estados empleando algunas puertas cuánticas. En los siguientes artículos profundizaremos en las distintas puertas cuánticas disponibles y cómo emplearlas usando el framework Qiskit de python. ¡No os lo perdáis!


Rubén Martínez, Data engineer en datahack

Deja un comentario

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