Aquí comienza una serie de artículos en los que se pretende hacer un recorrido por los principios básicos de la Computación Cuántica, algo que abrirá un mundo de posibilidades y logrará resolver problemas asociados con Big DataMachine learning e Inteligencia Artificial que con la computación tradicional no es posible resolver. Y como la mejor forma de aprender es hacerlo de forma práctica, vamos a acercarnos a este paradigma empleando Qiskit, el framework que ofrece  IBM para desarrollar algoritmos que se aprovechen de las particularidades que ofrece la física cuántica aplicada a la computación. Comencemos por la pregunta más obvia.

¿Cuál es la principal diferencia entre la Computación Clásica y la Computación Cuántica?

Para abordar esa pregunta vamos a comenzar viendo cómo se almacena la información y cómo se tratan las distribuciones de probabilidad en Computación Clásica para en un siguiente artículo confrontarlo con la forma de trabajar en Computación Cuántica.

Distribuciones de Probabilidad en Computación Clásica

Un primer aspecto diferenciador es cómo se representa la unidad mínima de información. En Computación Clásica, la que se emplea para la arquitectura y el software presente en los servidores, ordenadores de sobremesa, portátiles, dispositivos móviles, el procesamiento de información se realiza manipulando bits. De esta forma, un bit es un fragmento de información que puede tomar o bien el valor 1 o el valor 0, pero solo uno de esos dos valores. Dentro de este enfoque, vamos a tratar el tema de distribuciones de probabilidad clásica poniendo el ejemplo del lanzamiento de una moneda que está sesgada. De manera que vamos a representar el resultado de dicho lanzamiento mediante una variable aleatoria X que tomará el valor “0” cuando salga “cara” y el valor “1” cuando se obtenga “cruz”. Formalmente, por cada lanzamiento de moneda se puede decir que se obtendrá “cara” con una probabilidad P(X=0) = p0 y “cruz” con P(X=1) = p1 siendo p>= 0 (es decir la probabilidad de obtener “cara” o de obtener “cruz” será siempre mayor o igual que 0) y introducción a la computación cuántica

DISTRIBUCIONES DE PROBABILIDAD

Vamos a extraer muestras de una distribución aleatoria binomial definida como:

introducción a la computación cuántica

donde ‘N’ es el número de éxitos, ‘n’ es el número de intentos y ‘p’ es la probabilidad de éxito en cada intento. En el siguiente ejemplo el número de intentos será 1 y la probabilidad de éxito (prob_1) será 0.2:

introducción a la computación cuántica

A continuación, podemos comprobar como la suma de las observaciones de 1’s y de 0’s suman 1:

introducción a la computación cuántica

REPRESENTACIONES VISUALES

Si queremos representar visualmente p0 y p1 veremos que estarán restringidos al cuadrante positivo. Esto es porque deben ser mayores o iguales que 0 debido al requisito de normalización. En el siguiente gráfico podemos comprobar cómo todas las distribuciones de probabilidad del lanzamiento de monedas sesgadas y no segadas caen dentro de la siguiente línea recta del cuadrante positivo:

introducción a la computación cuántica

Una forma de representar probabilidades es en forma de vector columnar:

introducción a la computación cuántica

De esta forma, ponemos una flecha encima del nombre de la variable ‘p’ para diferenciarlo de un escalar. En este caso tenemos un vector representando a una distribución de probabilidad y, cuando esto ocurre, recibe el nombre de vector estocástico. El requisito de normalización indica que la norma del vector está restringida a 1 en la norma l1, lo que se puede expresar como:

introducción a la computación cuántica

Pero además, como p1 >= 0 estaremos restringidos al cuadrante positivo del círculo unitario. Esto se puede comprobar calculando la norma ldel vector ‘p’  donde prob_0 = 0.8 y prob_1 = 0.2.

introducción a la computación cuántica

El primer elemento del vector ‘p’ se corresponderá con la probabilidad de obtener cara (prob_0) y el segundo con la probabilidad de obtener cruz (prob_1). Si quisiéramos extraer, por ejemplo, prob_0 podríamos proyectar el vector ‘p’ sobre el primer eje. Esa proyección se corresponde con la matriz de transformación

introducción a la computación cuántica

Si calculamos la longitud de la norma l1 del resultado de aplicar la matriz M_0 al vector ‘p’ obtendremos la probabilidad prob_0.

introducción a la computación cuántica

Para obtener la probabilidad de obtener cruz tendríamos que proyectar el vector ‘p’ sobre el segundo eje de la siguiente forma:

introducción a la computación cuántica

Esto nos lleva a la cuestión de cómo transformar una distribución de probabilidad en otra, por ejemplo, para cambiar el sesgo de una moneda.

TRANSFORMACIÓN DE UNA DISTRIBUCIÓN DE PROBABILIDAD EN OTRA

Hemos visto que una distribución de probabilidad se puede representar como un vector estocástico y, para modificarlo, podemos multiplicar una matriz de transformación sobre dicho vector siempre que esa matriz cumpla unos requisitos:

Esta matriz recibe el nombre de left stochastic matrix. En el siguiente ejemplo veremos cómo transformar un vector estocástico ‘p’ correspondiente a una moneda no sesgada (50% de probabilidad de obtener cara y 50% de obtener cruz) en otra que sí está sesgada después de multiplicar a ‘p’ por la izquierda por una left stochastic matrix:  introducción a la computación cuántica

Entropía 

Para terminar este primer artículo, vamos a introducir el concepto de Entropía como medida de desorden o en nuestro caso, de falta de predictibilidad cuya definición formal será:  introducción a la computación cuánticaEn el siguiente gráfico comprobaremos cómo la Entropía será máxima en el caso de una moneda no sesgada, que se corresponde con una distribución uniforme:  introducción a la computación cuántica

En siguientes artículos comenzaremos a movernos por el apasionante mundo de la Computación Cuántica haciendo paralelismos con los conceptos que acabamos de ver. ¡No te los pierdas!

MÁSTER EXPERTO EN BIG DATA & ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

En el primer artículo de esta serie sobre Computación Cuántica se expuso cómo la unidad fundamental de información en sistemas de Computación Clásica era el bit y cómo se tratan las distribuciones de probabilidad en ese paradigma. El objetivo de esta nueva entrega es el de ampliar nuestra perspectiva a la hora de abordar la modelización de problemas. Comencemos.

Qubits

La Computación Cuántica emplea, como se comentó anteriormente, principios presentes en física cuántica como los fenómenos de superposición y entrelazamiento, entre otros, para llevar a cabo cálculos de una forma más eficiente que con la computación tradicional. Esto lo consigue empleando como unidad de información el qubit, que es un sistema de mecánica cuántica de 2 estados pero que, cuando es observado y medido, puede tomar cualquier posible combinación de esos 2 valores. En el artículo inicial se presentó el ejemplo del lanzamiento de una moneda como un caso que podía modelizarse como una distribución de probabilidad en Computación Clásica y se representaba como un vector columnar.

PRIMERA APROXIMACIÓN AL ESTADO CUÁNTICO

Como primera aproximación, podemos acercarnos al concepto de estado cuántico también como una distribución de probabilidad representada a través de un vector columnar. Para identificarlo y distinguirlo del vector de Computación Clásica se empleará el denominado ket de la notación Dirac. Siguiendo esta nomenclatura, el ket que representa el estado de un qubit se escribirá de la siguiente forma:

introducción a la computación cuántica

Donde a0, a1 ∈ ℂ y se denominan amplitudes de probabilidad de forma que cada amplitud estará asociada a un estado cuántico. La diferencia con el modelo clásico es que ahora el requisito de normalización es en la norma l2 en vez de en l1. Formalmente esto se traduce en que la raíz cuadrada de la suma de los cuadrados de los valores absolutos de las amplitudes será igual a 1:

introducción a la computación cuántica

PROFUNDIZANDO EN LA REPRESENTACIÓN DEL ESTADO CUÁNTICO

Profundizando en cómo representar un estado cuántico, hay que decir que se emplean como vectores de base canónica en 2 dimensiones los kets 0 y 1 cuya notación Dirac será la siguiente:

introducción a la computación cuántica

Combinando lo que hemos visto sobre cómo representar el estado de un qubit con la notación de la base canónica en computación cuántica, podemos describir el estado de dicho qubit empleando esa base canónica de la siguiente forma:

introducción a la computación cuántica

La expansión del estado del qubit  (|) en una base nos lleva a unos de los fenómenos más importantes en mecánica cuántica, la Superposición. Si observamos una muestra de esa distribución de probabilidad que representa el qubit y la medimos, obtendremos la salida ‘0’ con una probabilidad igual al cuadrado del valor absoluto de la amplitud que acompaña a la base canónica ket 0, es decir, |a0|2 y que obtendremos un ‘1’ con probabilidad |a1|2 (el cuadrado del valor absoluto de amplitud que acompaña al ket 1).  Esta regla que nos permite calcular la probabilidad con la que se obtendrá cada uno de los estados cuánticos recibe el nombre de regla de Born.

Circuitos Cuánticos con Qiskit

Como la idea es ir viendo cómo implementar estos conceptos de teoría empleando el framework Qiskit de python, vamos a comenzar simulando el ejemplo del lanzamiento de una moneda totalmente sesgada donde se obtendrá “cara” en el 100% de los lanzamientos, por lo que el ket

introducción a la computación cuántica

La librería ‘BasicAer’ proporciona un framework de simulación para la pila de software de Qiskit. En concreto, mediante su método ‘get_backed’ permite definir el entorno de ejecución que podrá ser o bien un simulador o un procesador cuántico real. En este caso, se está indicando que se utilizará el simulador ‘qasm_simulator’, por lo que la ejecución no se realizará en un entorno cuántico auténtico pero tratará de imitarlo. También devolverá un diccionario con el contador de las medidas realizadas que estarán almacenadas en registros clásicos del circuito cuántico. En la variable ‘qr’ se almacenará la referencia a un registro cuántico que permitirá almacenar un qubit. Mientras que la variable ‘cr’ se empleará para manejar un registro clásico que contendrá un bit. Por último, en la variable ‘circuit’ se define un circuito cuántico que inicialmente dispondrá del registro cuántico ‘qr’ y del registro clásico ‘cr’. Hay que decir que cualquier qubit estará siempre inicializado por defecto en el ket 0, por lo que, si lo medimos, obtendremos el resultado deseado de una moneda totalmente sesgada que devuelva siempre ‘cara’. Para realizar esa medición emplearemos el método ‘measure’ del circuito cuántico que hemos definido en la variable ‘circuit’:

introducción a la computación cuántica

El método ‘measure’ recibirá el qubit que hemos almacenado en el registro cuántico ‘qr’, y cuando sea ejecutado el circuito, realizará una medición mediante la observación del estado cuántico lo que provocará que dicho estado colapse y se obtenga un valor concreto que será almacenado en el registro clásico definido en la variable ‘cr’.  

EL SIGUIENTE PASO

Una vez que se ha añadido esa operación de medición al circuito procederemos a ejecutarlo 50 veces (parámetro shots=50) mediante la librería ‘execute’ de Qiskit almacenado la referencia a esa llamada en la variable ‘job’. Dicho método ‘execute’ recibirá el circuito a ejecutar y el backend de ejecución. Una vez hecho eso, se guardará en la variable ‘result’ la llamada al método ‘result’ del objeto ‘job’. Por último, como estamos empleando el ‘qasm_simulator’ dispondremos del método ‘get_counts’ para obtener un diccionario donde cada clave será un estado y su valor el número de ocurrencias del mismo durante los experimentos (shots). Podremos comprobar que las 50 veces que se repite la ejecución del circuito cuántico y se realiza su medición se obtiene siempre un ‘0’. Si estas ejecuciones se hubieran realizado en un procesador cuántico real podríamos encontrar que esos resultados no  coincidirían exactamente con estas medidas debido entre otros factores al ruido.

introducción a la computación cuántica

Conclusión

Acabamos de definir y ejecutar nuestro primer circuito cuántico para simular el problema del lanzamiento de una moneda sesgada. Y como probablemente os hayáis quedado con ganas de seguir jugando os emplazo al siguiente artículo de esta serie donde continuaremos profundizando en este apasionante campo.  

MÁSTER EXPERTO EN BIG DATA & ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

En el primer artículo de la serie vimos cómo aproximarnos a las distribuciones de probabilidad en la Computación Clásica que emplea bits como unidad básica de información. En el segundo, comenzamos a asomarnos de forma superficial a la Computación Cuántica introduciendo conceptos como qubit, base canónica, superposición, regla de Born y finalizamos viendo cómo implementar un circuito cuántico con Qiskit de python, que modelizaba el problema del lanzamiento de una moneda completamente sesgada que siempre devuelve ‘cara’ (que se corresponde con el valor de salida ‘0’). Utilizaremos ese código como punto de partida para los temas que vamos a tratar en esta ocasión:

introducción a la computación cuántica código inicial

Esfera Bloch

Al realizar en el backend ‘qasm_simulator’ las 50 ejecuciones y posteriores medidas del circuito anterior formado por un qubit inicializado en el ket 0, se obtiene siempre la salida ‘0’ (cara de la moneda). Sería muy útil disponer de algún mecanismo de visualización para facilitar la comprensión de los pasos que vamos dando y aquí es donde entra en escena la Esfera Bloch. Se trata de una representación que permite proyectar un estado cuántico a una localización de la superficie de una esfera con unas características un tanto especiales. Habíamos visto que un qubit tiene 2 amplitudes de probabilidad (una correspondiente a cada base canónica). Como son números complejos (parte real y parte imaginaria) se necesitaría un espacio de 4 dimensiones. Pero, como los vectores están normalizados, esto elimina un grado de libertad, por lo que podríamos emplear una representación en 3 dimensiones, que como estaréis imaginando, será la Esfera Bloch.

PECULIARIDADES DE LA ESFERA

Antes comentábamos que esta esfera tiene una serie de peculiaridades. Su polo norte se corresponde con el estado del ket |0> y su polo sur con el del ket |1>. Intuitivamente, esto podría extrañar, ya que en el eje Z se encuentran 2 vectores que son ortogonales. La potencia de este tipo de representación es que cualquier punto de la esfera se corresponderá con un estado cuántico. También podemos afirmar que cualquier estado cuántico puro, es decir, un estado cuántico representado por un ket (vector columnar) se podrá visualizar como un punto de la esfera. Además, podremos encontrar estados cuánticos mixtos (no descritos por un ket) que estarán representados dentro de la esfera.

VISUALIZACIÓN DE LA ESFERA

Ya es turno de volver a tocar un poco de código y ver cómo se visualiza esa Esfera Bloch. Para ello, en primer lugar vamos a emplear el backend ‘statevector_simulartor’ mediante llamada a BasicAer.get_backend(). A continuación, crearemos un circuito llamado ‘circuit’ formado por un registro cuántico (‘qr’) y por uno clásico (‘cr’). El objetivo es que el qubit almacenado en ‘qr’ se encuentre en el estado ket |0> (situación que ocurre por defecto) y visualizarlo en la Esfera Bloch. Hay que decir que para modificar el estado de los qubits emplearemos puertas cuánticas (matrices que transformarán los vectores columnares de los qubits). En este caso, no hay que realizar ninguna modificación al qubit pero aun así hay que añadir una operación llamada ‘iden’ al circuito que corresponde con la matriz identidad. Un punto a señalar es que por convenio en los registros cuánticos la posición menos significativa será la de más a la izquierda. Es decir, si se define un registro cuántico que contendrá 2 qubits:

QR = QUANTUMREGISTER(2)

El qubit menos significativo, es decir qr[0], será el que esté más a la izquierda y el más significativo es de más a la derecha en la siguiente representación |00>. En el caso de los registros clásicos (en los que guardaremos los resultados de las mediciones de circuitos cuánticos) la posición menos significativa será la de más a la derecha como ocurre a la hora de representar bits. Volviendo a nuestro ejemplo, una vez añadida al circuito la operación ‘iden’ sobre el qubit se invocará al método ‘execute’ sobre el circuito indicando el backend almacenando el manejador de esa llamada en la variable ‘job’. Una vez hecho esto, se invocará al método ‘plot_bloch_multivector’ haciéndole llegar el resultado de ‘job.result().get_statevector(circuit)’. En la siguiente imagen puede verse el código completo y la visualización de la Esfera Bloch en la que aparece resaltada la flecha correspondiente al qubit en el estado del ket |0>.

introducción a la computación cuántica esfera bloch

Superposición

Para entender el fenómeno de la Superposición vamos a seguir con el ejemplo del lanzamiento de una moneda pero ahora el objetivo es que no esté sesgada. Es decir, vamos a pasar del caso en que la moneda estaba completamente sesgada de forma que siempre se obtenía cara (ket |0>) a la situación de que en el 50% de los casos se obtenga cara y en el otro 50% se obtenga cruz que se corresponderá con el estado de superposición

introducción a la computación cuántica

donde introducción a la computación cuánticade los casos que según la regla de Born la salida se corresponderá con el ket |0> y el resto al ket |1>.  Una forma de realizar esta transformación será empleando la Quantum Gate ‘ry’ que se corresponderá con una rotación de π/2 en el eje Y. Esa puerta se implementa mediante la matriz:

introducción a la computación cuántica

En futuros artículos de esta serie veremos más tipos de puertas cuánticas y entre ellas la puerta Hadamard que nos permitirá llegar también a un estado de Superposición.

Construyendo el circuito

A continuación, veremos el código para construir el circuito que parte de un qubit en el estado ket |0> , le aplica la puerta ‘ry’ para obtener una moneda no sesgada e invoca al método ‘plot_histogram’ sobre el resultado de 50 ejecuciones del circuito en el backend ‘qasm_simulator’ (almacenado en la variable ‘bk’) para poder obtener el conteo de veces en el que el lanzamiento de la moneda acaba en cada estado.

introducción a la computación cuántica circuito

Si queremos visualizar ese experimento en la Esfera Bloch el código sería el siguiente

introducción a la computación cuántica esfera del circuito

Como se puede comprobar se ha producido una rotación de 90º sobre el eje Y. En el siguiente artículo seguiremos jugando con puertas cuánticas e introduciremos conceptos como superposición e interferencia y cómo codificarlos empleando Qiskit. ¡No os lo perdáis!

MÁSTER EXPERTO EN BIG DATA & ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

En el segundo artículo de esta serie se comentaba que las amplitudes de probabilidad son números complejos en contraposición con los números reales positivos que se emplean en Computación Clásica.

Superposición y números complejos

Los números complejos tiene la forma de a + bi donde ‘a’ es la parte real  y ‘bi’ es la parte imaginaria siendo ‘a’ y ‘b’  números reales positivos o negativos e ‘i’ se corresponde con el número imaginario de forma que:

introducción a la computación cuántica

(ya que no tenemos números reales que después de elevarlos al cuadrado sigan siendo negativos, por lo que no podremos volver hacia atrás haciendo la raíz cuadrada). Los números complejos permiten representar coordenadas en un plano de manera que la parte real se asociará al eje X y la parte imaginaria con el eje Y. Por lo que:

SUMA / RESTA DE NÚMEROS COMPLEJOS

(7 + 3i) + (3 – 5i) = (10 -2i)

MULTIPLICACIÓN DE NÚMEROS COMPLEJOS

(7 + 3i) * (3 -5i) = 7 * 3 + 7 * (-5i) + 3i * 3 + 3i * (-5i) = 21 + (-35i) + 9i + (-15i2) = 21 -26i -15*(-1) = 36 – 26i

LA RAZÓN POR LA QUE I2 SIMPLIFICA A (-1) ES PORQUEintroducción a la computación cuánticaDIVISIÓN DE NÚMEROS COMPLEJOS

Para realizar la división de números complejos hay que introducir el concepto de conjugada de números complejos, que consiste en cambiar el signo a la parte imaginaria. Por ejemplo la conjugada del número complejo (a + bi) será (a – bi). Multiplicar un número complejo por su conjugada supone que los términos centrales se cancelan: (a + bi) * (a – bi) = a2 -abi + abi –(bi)2 Para realizar la división de números complejos multiplicaremos al numerador y al denominador por la conjugada del denominador: (7 + 3i) / (3 – 5i) = ((7 + 3i) * (3 + 5i)) / ((3 – 5i) * (3 + 5i))

Uso de números complejos

Para comprobar la utilidad de emplear números complejos vamos a realizar un circuito cuántico que aplique una rotación ‘ry’ de 90º pero ahora al ket |1>. Hemos visto que todo qubit comienza inicializado en el estado ket |0> por lo que tendremos que aplicar la puerta cuántica ‘x’ (que se correspondería con una puerta lógica NOT) sobre el qubit para que pase a estar en estado |1>. La puerta cuántica ‘x’ se corresponderá con la matriz:

introducción a la computación cuántica

Una vez que el qubit se encuentre en el |1> aplicaremos la puerta ‘ry’ con un ángulo de 90º para realizar dicha rotación:

introducción a la computación cuántica

En el tercer artículo de esta serie se aplicó la puerta ‘x’ sobre el qubit en el estado |0> y el resultado fue:

introducción a la computación cuántica

Se puede comprobar que cuando se aplica la rotación ‘ry’ sobre el ket |1> el resultado es similar al anterior pero con signo opuesto, por lo que tendremos una amplitud de probabilidad negativa. El estado obtenido será:

introducción a la computación cuántica

USO DE NÚMEROS COMPLEJOS PARA REPRESENTAR AMPLITUDES DE PROBABILIDAD EN ESTADOS CUÁNTICOS

La utilidad de disponer de números complejos para representar las amplitudes de probabilidad de los estados cuánticos se hace patente cuando se comprueba que el signo negativo del ket |0> anterior no puede observarse al realizar la medición de las estadísticas de la ejecución del circuito cuántico. Para obtener dichas estadísticas de las frecuencias de cada resultado se ha empleado el backend ‘qasm_simulator’:

introducción a la computación cuántica

Se puede comprobar que prácticamente se han producido el mismo número de caras (‘0s’) que de cruces (‘1s’). La utilización de números complejos permite modelar un fenómeno de mecánica cuántica conocido como ‘interferencia’ según el cual las amplitudes de probabilidad puede interactuar unas veces constructiva y otras destructivamente. Una forma de comprobarlo es aplicar sobre un qubit en el estado |0> dos rotaciones ‘ry’ consecutivas de 90º. Al realizarlo obtendremos el ket |1> aunque durante el proceso hubo cierta superposición. El código para realizar este experimento en el que se realizarán 50 ejecuciones del circuito cuántico sobre el backend ‘qasm_simulator’ y se obtendrá el histograma de los resultados es el siguiente:

introducción a la computación cuántica

En próximos artículos seguiremos avanzando tratando más propiedades presentes en mecánica cuántica como por ejemplo el Entanglement y viendo cómo implementarlas empleando el framework Qiskit. ¡Os esperamos!

MÁSTER EXPERTO EN BIG DATA & ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

En el primer artículo de la serie vimos cómo aproximarnos a las distribuciones de probabilidad en la Computación Clásica. En el segundo, comenzamos a asomarnos de forma superficial a la Computación Cuántica introduciendo conceptos como qubit, base canónica, superposición, regla de Born y los circuitos cuánticos con Qiskit de python. En el tercero hablamos de la Esfera Bloch, la superposición y cómo construir un circuito cuántico.

En el cuarto artículo de esta serie se introdujeron conceptos como superposición e interferencia y cómo codificarlos empleando Qiskit. Ahora es turno de ver cómo representar varios qubits y de adentrarnos en la propiedad conocida como entanglement.

Múltiples qubits

En este punto vamos a empezar a trabajar con estados cuánticos formados por varios qubits. Si recordamos lo que vimos anteriormente, un estado cuántico lo podemos asemejar a una distribución de probabilidad y un qubit es un estado cuántico de 2 niveles [a0, a1],  de forma que podemos representar un estado cuántico mediante un vector columnar.

Para hacer referencia a su label (el nombre de dicho estado) se utilizará lo que se denomina ket en la notación Dirac, es decir, podemos referirnos a nuestro estado cuántico mediante el ket . Para continuar refrescando conceptos previos, estas distribuciones de probabilidad deberán tener norma 1 en la norma L2.

Por tanto recapitulando, podemos escribir un qubit de la siguiente forma:

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

Donde a0 y a1 reciben el nombre de amplitudes de probabilidad y son números complejos, por lo que no solo estaremos restringidos al cuadrante positivo del plano como ocurría con las distribuciones de probabilidad clásica, cuya norma debe ser igual a 1 en la norma L1 y además cada probabilidad debía ser mayor o igual a 0 (lo que únicamente permitía representaciones en el cuadrante positivo citado anteriormente).

Como en computación cuántica el requisito de normalización debe ser la norma L2 eso puede formalizarse para el caso de un qubit en que:

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

Podemos encontrar 2 qubits especiales llamados vectores de base canónica en 2 dimensiones que son:

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

La parte interesante es que podemos expandir cualquier qubit en esta base de la siguiente forma dando lugar al fenómeno de superposición:

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

Según la regla de Born, si extraemos una muestra del qubit |(|) > obtendremos la salida 0 con una probabilidad |a0|2 y la salida 1 con una probabilidad de |a1|2.

Producto Kronecker

Una vez finalizado este repaso, toca ponernos manos a la obra con nuevos conceptos. Vamos a comprobar cómo añadir más qubits nos permite introducir otro fenómeno cuántico.

En este punto nos puede surgir la duda sobre cómo representar en forma de vector columnar 2 qubits. La forma de hacerlo es empleando la operación de producto de tensores o producto Kronecker. Para entenderlo vamos a ver un ejemplo en el que partimos de 2 qubits: |(|) > y |(|)` > :

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

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

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

Vamos a concretar un poco más. Supongamos que tenemos almacenado en el registro cuántico qr0 un qubit que está en el estado |0> y también disponemos de otro registro cuántico llamado qr1 que de forma similar al anterior almacena un qubit en el estado |0>. Una forma de visualizar la regla del producto Kronecker de esos 2 qubits (|0> ⊕ |0>) sería mediante el siguiente código:

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

El estado resultante del producto Kronecker de esos dos qubits que cada uno de ellos se encuentra en el estado |0> se suele representar como |00>. Si quisiéramos representar los estados |01>, |10> y |11> tendríamos que seguir el mismo procedimiento que hemos realizado para generar el ket |00>.

Hay que señalar que los estados |00>, |01>, |10> y |11> forman los vectores de base canónica en un espacio de números complejos de 4 dimensiones denotado como:

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

Conclusión

Cuando empleamos modelos de Machine Learning y Deep Learning también trabajamos con espacios de alta dimensionalidad pero no se construyen como un producto de tensores sino que suele tratarse de Rn, es decir, un mapeo a los números reales para alguna dimensión ‘n’.

El efecto de construir espacios de alta dimensionalidad empleando producto de tensores es que no todos los vectores de dicho espacio pueden ser escritos como el producto de vectores de los elementos de ese espacio. Este hecho que en principio puede parecer confuso, nos permitirá descubrir la propiedad cuántica conocida como entanglement, que recorreremos en el siguiente artículo viendo cómo la podemos observar empleando Qiskit.  ¡No te lo pierdas!


MÁSTER EXPERTO EN BIG DATA & ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

chevron-down