SciELO - Scientific Electronic Library Online

 
vol.12 issue2 author indexsubject indexarticles search
Home Pagealphabetic serial listing  

Services on Demand

Journal

Article

Indicators

  • Have no cited articlesCited by SciELO

Related links

Share


Reportes científicos de la FACEN

Print version ISSN 2222-145X

Rep. cient. FACEN vol.12 no.2 San Lorenzo Dec. 2021

https://doi.org/10.18004/rcfacen.2021.12.2.83 

Artículo Original

Algoritmo Deutsch-Jozsa: una mirada al poder de la computación cuántica

Deutsch-Jozsa Algorithm: a look at the power of quantum computing

1Universidad Nacional de Asunción, Facultad de Ciencias Exactas y Naturales. Departamento de Física. San Lorenzo, Paraguay.


Resumen:

El paralelismo que caracteriza a los algoritmos cuánticos los dota de la asombrosa capacidad de procesar información de manera exponencial con unos pocos cubits. El algoritmo Deutsch-Jozsa es un ejemplo de esta capacidad. Presentamos un análisis sobre el funcionamiento de dicho algoritmo y una implementación del mismo utilizando Qiskit de IBM.

Palabras clave: computación cuántica; paralelismo; cubit

Abstract:

The parallelism that characterizes quantum algorithms endows them with the amazing ability to process information exponentially with a few qubits. The Deutsch Jozsa algorithm is an example of this ability. We present an analysis of how this algorithm works and its implementation using IBM’s Qiskit.

Key words: quantum-computing; parallelism; qubit

Introducción

Existen diversos algoritmos cuánticos en áreas como la criptografía, búsqueda y optimización, simulación de sistemas cuánticos y resolución de sistemas de ecuación lineal (Montanaro, 2016).

El circuito que implementa el algoritmo Deutsch-Jozsa se esquematiza en la Figura 1. Se define el estado inicial como sigue: simulación de sistemas cuánticos y resolución de sistemas de ecuaciones lineales (Montanaro, 2016). Entre esos problemas existe uno que consiste en lo siguiente: dada una función binaria, y asumiendo que la misma puede ser ´únicamente constante o balanceada, distinguir cada caso. Un computador clásico debe evaluar la función 2 n−1 + 1 veces, para una función con n bits de entrada, con el fin de llevar a cabo esta tarea.

El algoritmo Deusch-Jozsa es el algoritmo cuántico que resuelve el problema planteado. Este algoritmo se ha simulado (Chuang, Vandersypen, Zhou, Leung, & Lloyd, 1998), y se han obtenido resultados en un solo paso, en lugar de una cantidad exponencial de pasos. Dicho algoritmo no posee muchas aplicaciones, aunque ha sido utilizado en el contexto de lenguajes formales (Batty, Casaccino, Duncan, Rees, & Severini, 2008).

Se presenta el algoritmo de Deutsch-Jozsa para tener una visión del poder de cómputo que tiene la computación cuántica, este poder de cómputo se basa en el paralelismo, el cual se caracteriza por el crecimiento exponencial, en relación al número de cubits, de la capacidad de realizar operaciones de manera simultánea.

El circuito que implementa el algoritmo Deustch-Jozsa se esquematiza en la Figura 1. Se define el estado inicial como sigue:

Al introducir el estado (1) en el circuito de la Figura 1 el mismo realiza las operaciones indicadas y se obtiene el estado final (Nielsen & Chuang, 2002):

Después de pasar por el circuito de la Figura 1, los primeros n cubits son medidos. Al estado resultante luego de la medición lo denominaremos |ψ 4. La forma que presenta la ecuación (2) nos permite diferenciar fácilmente entre una función balanceada y una constante.

Para implementar los algoritmos cuánticos, IBM permite el acceso a su computador cuántico, o simuladores del mismo, de manera online. Qiskit (Qiskit Development Team, 2020) es un framework de código abierto para diseñar circuitos cuánticos y ejecutarlos en simuladores y computadores cuánticos reales creada por IBM y está basado en Python. Constituye una herramienta muy potente y accesible para ejecutar algoritmos cuánticos.

Figura 1: Circuito que implementa el algoritmo Deutsch-Jozsa 

Se realiza un análisis de la ecuación (2) atendiendo principalmente a la manera en la cual la misma es capaz de realizar la tarea planteada. Con esto en mente, se plantea un ejemplo con dos cubits, se espera que el mismo facilite la comprensión del procedimiento que sigue el algoritmo Deutsch- Jozsa. Para finalizar se ejecuta el algoritmo para 3 cubits en la plataforma IBM Quantum Experience con la ayuda de Qiskit.

Notación

Las variables x y z, en la ecuación (2), representan las distintas combinaciones de ceros y unos posibles. Por ejemplo: dado el estado |0010〉 de 4 cubits, tenemos los siguientes valores:

Z0 = 0, Z1 = 1

Z2 = 0, Z3 = 3

Entonces, una ᴢ posible puede ser:

Z = (z3, z2, z1, z0) = (0,0,1,0)

Y el estado al que hacemos referencia será |Z〉 = |z3 z2 z1 z0〉 =|0010〉 para ese valor especifico de z. La misma notación se utiliza para la variable x.

Cabe destacar que al escribir x z se entenderá lo siguiente

Análisis

Al analizar los posibles resultados post-medicación, contemplamos los siguientes casos:

a) Todos los bits medidos son cero:

En este caso, se tiene que la amplitud de |0〉⊗𝑛 es:

En caso de que la función sea constante, esta amplitud será 1 o −1 dependiendo del valor cons tante que tome f(x). Es fácil notar que cuando todos los bits medidos son cero, la función no puede ser balanceada, ya que eso haría que la amplitud fuera cero, lo cual es impensado para un estado válido (su norma debe ser unitaria).

b) Al menos un bit es distinto de cero:

En el caso en el que al menos un bit resulte ser 1, cabe el análisis de las dos ´únicas situaciones posibles: que la función sea balanceada o que la función sea constante. En caso de que la función sea balanceada no hay mucho que decir, ya que con el análisis anterior queda claro que la ´única manera de que la función sea balanceada es medir al menos un bit distinto de cero, pudiendo ser cualquier combinación con cualquier cantidad de unos el resultado de la medición. En cambio, al pensar en la posibilidad de que la función sea constante, actualmente no tenemos suficientes argumentos para asegurar que esta no es una posibilidad válida. Para demostrar que la función no puede ser constante en el caso de medir al menos un uno, analizamos más a fondo la ecuación (2).

Tomaremos el numerador de los n primeros cubits de la ecuación (2). La sumatoria sobre x, en el caso de que la función sea constante, se desarrolla como sigue:

Cada combinación de z da 2n términos en cada término de arriba. Así tenemos en total 2n términos después de desarrollar ambas sumatorias.

Posterior a la medición, la cantidad de términos que se mantienen disminuye nuevamente a 2n, y se obtiene la siguiente suma:

En la suma de arriba, se observa que la suma de los zi depende de las anteriores en todo momento. Por lo tanto, si tomamos z0 = 0 y z1 = 0 esto implicará que todos los demás valores de zi son cero, este caso ya se ha analizado, y la única manera de avanzar en el análisis es decir que z = 1 esto dará que (−1)z0 = -1 y la suma de arriba jamas alcanza el valor 2”, y por lo tanto, ᴪ 4〉 no será un estado valido después de la medición, asi que la única conclusión posible, al medir una cantidad distinta de cero de unos, será que la función es balanceada.

Ejemplo con 2 cubits

Suponiendo que introducimos dos cubits al circuito, es decir n = 2, podemos reemplazar todos los posi bles valores de x en el numerador de los primeros dos cubits de la expresión (2), y obtendremos:

Si la función es constante podemos definir ƭ ≡ƭ (ⅈⅉ) y escribimos

Reemplazando los distintos valores de z obtenemos:

Se observa que al medir y obtener un estado distinto de |00〉 el coeficiente que acompaña al mismo será, en todos los casos, menor que 4 en valor absoluto, por lo tanto, no representara un estado válido, y por ese motivo jamás se medirá un estado distinto al |00〉 cuando la función sea constante.

En resumen, si después de la medición obtenemos el estado |0〉 n ⊗, entonces podemos asegurar que la función es constante. Si, en cambio, obtenemos cualquier otro estado, podemos asegurar que la función es balanceada.

Implementación del algoritmo con Qiskit

Implementaremos dos circuitos en la plataforma de IBM utilizando Qiskit. El primer circuito evaluará una función balanceada, y el segundo una función constante. El circuito creado tendrá cuatro cubits de entrada, los tres primeros serán los medios según indica el algoritmo.

Para implementar los circuitos con las respectivas funciones que nos atañen, y debido a que todas las entradas están inicializadas en el cubit |0〉 , aplicamos una compuerta X al último cubit, de esta forma hacemos que el cubit de entrada sea |0001〉 . Una vez realizado esto, podemos crear los dos circuitos para cada caso. Los circuitos creados con Qiskit se presentan en la Figura 2 para una función balanceada y Figura 3 para una función constante

Figuras 2.  Circuitos creados con Qiskit. 2) Para una función balanceada. 

Figuras 3.  Circuitos creados con Qiskit. 3) Para una función constante.  

En cada caso se realiza la medición de los tres primeros cubits una sola vez. Los resultados obtenidos de los circuitos de Figura 2 y Figura 3 son los representados en la Figura 4 y Figura 5 respectivamente.

Al medir una sola vez los primeros tres cubits del circuito 2 el resultado es 100, como se mide al menos un uno, el algoritmo Deutsch-Jozsa nos dice que la función evaluada es balanceada. En cambio, para el circuito 3 notamos que el resultado de la medición es 000, es decir, todos los bits obtenidos son cero, y podemos concluir que la función es constante.

Figuras 4. Resultados obtenidos de los circuitos creados con Qiskit. 4) Para una función balanceada. 

Cabe recalcar que los resultados se han obtenido realizando la medición una sola vez, lo cual demuestra la enorme ventaja de este algoritmo sobre el método clásico.

Figuras 5. Resultados obtenidos de los circuitos creados con Qiskit. 5) Para una función constante. 

Conclusión

El algoritmo Deutsch-Jozsa es una muestra, bastante clara, del poder que tiene la computación cuántica gracias al “paralelismo”. Una acabada comprensión del funciona miento del mismo da rienda suelta a la imaginación y nos hace pensar en la posibilidad de la implementación de otros algoritmos cuánticos para realizar tareas mucho más relevantes que la simple discriminación entre dos tipos de funciones bien definidas, podrían servir como ejemplos el algoritmo de Grover, el cual es un algoritmo de búsqueda; el algoritmo de Shor, el cual permite encontrar los factores de un número de forma muy eficiente, entre otros.

Qiskit, por su parte, es una herramienta bastan- te útil para introducirse al mundo de la computación cuántica, y no queda nada más que esperar a ver todo lo que este tipo de iniciativas puede aportar, tanto en el campo de la ciencia como en la industria. El paralelismo que caracteriza a la computación cuántica es la clave de ese poder, el cual aún no ha sido totalmente aprovechado.

Conflictos de interés

El autor declara no tener conflictos de interés

Referencias

Batty, M., Casaccino, A., Duncan, A.J., Rees, S. & Severini, S. (2008). An application of the deutsch-jozsa algorithm to formal languages and the word problem in groups. Pp. 57-69. [ Links ]

Kawano, Y. & Mosca, M. (Eds.). Theory of quantum computation, communication, and cryptography. vii + 118 pp. [ Links ]

Chuang, I.L., Vandersypen, L.M., Zhou, X., Leung, D.W. & Lloyd, S. (1998). Experimental realization of a quantum algorithm. Nature, 393(6681): 143-146. [ Links ]

Montanaro, A. (2016). Quantum algorithms: an overview. NPJ Quantum Information, 2(15023): 1-8. [ Links ]

Nielsen, M. A. & Chuang, I. (2002). Quantum computation and quantum information. New York: Cambridge University Press. xxxii + 676 pp. [ Links ]

Qiskit Development Team. (2020). Qiskit 0.29.0. Program and documentation. 091;. https://qiskit.orgLinks ]

Recibido: 31 de Marzo de 2021; Aprobado: 16 de Agosto de 2021

*Autor correspondiente: francorodney03@gmail.com

Creative Commons License Este es un artículo publicado en acceso abierto bajo una licencia Creative Commons