El algoritmo de Deutsch-Jozsa
El algoritmo de Deutsch supera a todos los algoritmos clásicos para un problema de consultas, pero la ventaja es bastante modesta: una consulta frente a dos. El algoritmo de Deutsch-Jozsa amplía esta ventaja — y, de hecho, puede usarse para resolver un par de problemas de consultas distintos.
A continuación se muestra una descripción del algoritmo de Deutsch-Jozsa en forma de circuito cuántico. También puede ser necesario un paso adicional de posprocesamiento clásico, no mostrado en la figura, dependiendo del problema específico que se resuelva.
Por supuesto, todavía no hemos explicado qué problemas resuelve este algoritmo; eso se hace en las dos secciones siguientes.
El problema de Deutsch-Jozsa
Comenzaremos con el problema de consultas que el algoritmo de Deutsch-Jozsa fue diseñado originalmente para resolver, conocido como el problema de Deutsch-Jozsa.
La función de entrada para este problema tiene la forma para un entero positivo arbitrario Al igual que en el problema de Deutsch, la tarea consiste en devolver si es constante y si es balanceada, lo que significa que el número de cadenas de entrada en las que la función toma el valor es igual al número de cadenas de entrada en las que la función toma el valor .
Observa que, cuando es mayor que existen funciones de la forma que no son ni constantes ni balanceadas. Por ejemplo, la función definida como
no pertenece a ninguna de estas dos categorías. Para el problema de Deutsch-Jozsa, simplemente ignoramos funciones como esta — se consideran entradas "irrelevantes". Es decir, para este problema tenemos la promesa de que es constante o balanceada.
El algoritmo de Deutsch-Jozsa, con su única consulta, resuelve este problema en el siguiente sentido: si todos y cada uno de los resultados de medición son entonces la función es constante; de lo contrario, si al menos uno de los resultados de medición es entonces la función es balanceada. Otra forma de expresarlo es que el circuito descrito anteriormente va seguido de un paso de posprocesamiento clásico en el que se calcula el OR de los resultados de medición para producir la salida.
Análisis del algoritmo
Para analizar el rendimiento del algoritmo de Deutsch-Jozsa aplicado al problema de Deutsch-Jozsa, conviene comenzar pensando en la acción de una sola capa de puertas Hadamard. Una operación Hadamard puede expresarse como una matriz de la manera habitual,
pero también podemos expresar esta operación en términos de su acción sobre los estados de la base estándar:
Estas dos ecuaciones pueden combinarse en una sola fórmula,
que es válida para ambas opciones de
Supongamos ahora que, en lugar de un solo qubit, tenemos qubits y se aplica una operación Hadamard a cada uno. La operación combinada sobre los qubits se describe mediante el producto tensorial ( veces), que escribimos como por concisión y claridad. Usando la fórmula anterior, y luego expandiendo y simplificando, podemos expresar la acción de esta operación combinada sobre los estados de la base estándar de qubits de la siguiente manera:
Nótese que aquí escribimos cadenas binarias de longitud como e siguiendo la convención de indexación de Qiskit.
Esta fórmula nos proporciona una herramienta útil para analizar el circuito cuántico anterior. Tras aplicar la primera capa de puertas Hadamard, el estado de los qubits (incluido el qubit más a la izquierda/inferior, que se trata de forma independiente del resto) es
Al aplicar la operación , este estado se transforma en
exactamente mediante el mismo fenómeno de retroceso de fase que vimos en el análisis del algoritmo de Deutsch.
A continuación se aplica la segunda capa de puertas Hadamard, que (según la fórmula anterior) transforma este estado en
Esta expresión parece algo complicada, y no se puede concluir mucho sobre las probabilidades de obtener distintos resultados de medición sin conocer más sobre la función
Afortunadamente, lo único que necesitamos saber es la probabilidad de que todos los resultados de medición sean — porque esa es la probabilidad de que el algoritmo determine que es constante. Esta probabilidad tiene una fórmula sencilla.
En detalle, si es constante, entonces o bien para toda cadena en cuyo caso el valor de la suma es o bien para toda cadena en cuyo caso el valor de la suma es Al dividir por y tomar el cuadrado del valor absoluto obtenemos
Si, por otro lado, es balanceada, entonces toma el valor en la mitad de las cadenas