
Hay conceptos de computación cuántica que parecen mucho más extraños de lo que realmente son porque solemos encontrarlos por primera vez dentro de algoritmos ya bastante complejos. El phase kickback, o retroceso de fase, es uno de ellos, y reconozco que cuando me enfrenté a este concepto por primera vez, me costó mucho comprenderlo, al menos en una primera aproximación.
La idea esencial del phase kickback es esta: bajo determinadas condiciones, una fase asociada a la acción de una operación sobre un cúbit objetivo aparece como una fase relativa en el cúbit de control. Esa fase no se observa directamente al medir, pero podemos transformar después esa información de fase en diferencias de probabilidad que sí son medibles. De algún modo, al manipular las fases, estamos manipulando la información que representan los cúbits.
Dicho así, quizá siga sonando poco intuitivo. Vamos a desmontarlo como haríamos con una pieza de software que no terminamos de comprender: primero aislamos el mecanismo mínimo, observamos qué entra y qué sale y, solo después, volvemos al sistema completo.
Para comprender lo que sigue a continuación, hace falta cierta familiaridad con el álgebra lineal de la computación cuántica y nociones básicas de ésta, para lo que recomiendo el libro “Dancing with cúbits”, de Robert S. Sutor.
¿Es imprescindible comprender phase kickback para un Quantum Software Engineer?
Como habrás visto en este artículo (y en otros que he publicado por el momento), todo está lleno de conceptos de la computación cuántica, de naturaleza matemática (notación de Dirac, autoestados, fases globales y relativas, números complejos, etc), así como concepto puramente cuánticos como phase kickback, entrelazamiento y otros.
Te puedes preguntar si realmente hace falta conocer todo esto con detalle y profundidad para implementar algoritmos cuánticos.
Mi opinión es que un Quantum Software Engineer, no tiene por qué ser un experto en todo lo anterior, pero sí conocerlo mínimamente; es como un programador de computación clásica que ignorase qué es un byte o cómo se almacena la información en el disco duro, por poner un simple ejemplo.
Si te pasa como a mí, comienzas queriendo programar una solución cuántica y poco a poco, vas tirando del hilo, descubriendo un mundo del que realmente dudo mucho que se pueda terminar nunca de conocer en toda su riqueza y profundidad, porque un simple concepto te lleva a otro, vas tirando del hilo, y éste es interminable, algo que para mí es precisamente lo que me proporciona un interés creciente y rico sobre la computación cuántica.
Antes de empezar: una fase no es todavía un resultado
Un estado cuántico puede multiplicarse por un número complejo de módulo uno sin que cambien directamente las probabilidades de una medida en la base computacional. Por ejemplo:
Si toda la función de estado queda multiplicada por el mismo factor, hablamos de una fase global. Esa fase no altera las probabilidades observables.
Lo interesante aparece con las fases relativas. Considera estos dos estados:
Si medimos cualquiera de ellos directamente en la base computacional, obtenemos 0 y 1 con la misma probabilidad. Sin embargo, no son el mismo estado. El signo menos introduce una fase relativa entre las dos amplitudes. Una puerta Hadamard permite revelar la diferencia:
Este detalle es fundamental. En un algoritmo cuántico no necesitamos «medir una fase» directamente. Podemos hacer que esa fase participe en una interferencia posterior y termine modificando probabilidades que sí podemos observar.
El circuito mínimo
Tomemos dos cúbits. El primero será el control y el segundo el objetivo. Preparamos el control en superposición:
Y preparemos el objetivo en el estado . El estado conjunto es entonces:
Ahora aplicamos una puerta CNOT, controlada por el primer cúbit. Sabemos que X|1\rangle=|0\rangle, de modo que el resultado sería un estado entrelazado. Pero el phase kickback se ve con mucha más claridad si elegimos como objetivo un autoestado del operador que controlamos.
Para X, uno de esos autoestados es :
Ese signo menos es el que nos interesa. Preparemos entonces:
Antes de aplicar la CNOT podemos escribirlo como:
La operación controlada no aplica X cuando el control está en , y sí lo hace cuando está en :
Como es autoestado de X con autovalor :
Podemos factorizar el segundo cúbit:
Y aquí está todo el mecanismo. La aplicación de X sobre el cúbit objetivo ha introducido un signo , pero al reorganizar el estado vemos que esa fase relativa ha quedado asociada al cúbit de control, parece misterioso, pero es efecto de la mecánica cuántica. El objetivo, además, permanece en su autoestado.
De ahí el nombre phase kickback: podemos pensar que la fase «retrocede» desde la operación aplicada al objetivo hacia el control. Es una imagen útil, aunque matemáticamente no hay ninguna partícula ni información viajando hacia atrás. Lo que estamos haciendo es reescribir el estado conjunto después de una operación controlada.
La versión general
El ejemplo anterior no es una peculiaridad de la puerta X. Supongamos una operación unitaria y un autoestado tal que:
Si el cúbit de control está en una superposición general:
, enteonces antes de la operación controlada tenemos:
Al aplicar la versión controlada de :
Y usando la propiedad de autoestado:
que podemos escribir como:
La fase asociada al autovalor de aparece ahora como fase relativa en el control. Este es el phase kickback en su forma más general.
Y fíjate en un detalle importante: el estado objetivo sigue siendo el mismo. La información interesante está ahora codificada en la fase relativa del control, y aquí está la clave de todo.
Si vienes del desarrollo de software, piensa en información codificada
Para un desarrollador de software puede resultar útil abandonar por un momento la intuición física y pensar en representaciones de información.
En programación estamos acostumbrados a que el mismo dato cambie de representación para que una operación posterior pueda utilizarlo. Un entero puede convertirse en una cadena, un conjunto de bits puede interpretarse como una máscara y una estructura puede serializarse antes de enviarla por la red. La información no desaparece: cambia la forma en la que está codificada.
Salvando las distancias, aquí ocurre algo parecido. La fase por sí sola no es un bit clásico que podamos leer. El circuito la codifica como fase relativa y después utilizamos otras puertas para convertir esa diferencia en amplitudes y, finalmente, en probabilidades observables hacia el resultado útil que queremos obtener.
Esta forma de pensar ayuda a evitar una confusión habitual: un algoritmo cuántico no obtiene su utilidad simplemente de «tener muchas posibilidades en superposición». Lo relevante es cómo transforma y hace interferir sus amplitudes para que la información que buscamos termine siendo accesible mediante una medida.
Deutsch-Jozsa: la fase como mensajero
Phase kickback está presente en la mayoría de algoritmos cuánticos conocidos, y el de Deutsch-Jozsa no es una excepción. Su oráculo suele expresarse mediante una operación del tipo:
Si el segundo registro se prepara en , la acción del oráculo puede escribirse como:
El valor de ya no necesita quedarse almacenado como un 0 o un 1 en el segundo registro. Aparece como una fase asociada al estado .
Después, las puertas Hadamard hacen interferir esas amplitudes. El algoritmo aprovecha precisamente el patrón de fases introducido por el oráculo para distinguir, bajo la promesa del problema, entre una función constante y una equilibrada.
Por tanto, cuando vemos ese segundo cúbit preparado como , no está ahí por una convención extraña. Está construido deliberadamente para convertir la evaluación de la función en información de fase.
Estimación de fase (QPE): llevar la idea mucho más lejos
La estimación cuántica de fase (Quantum Phase Estimation, QPE) convierte este mecanismo en el centro del algoritmo.
Partimos de un operador unitario y uno de sus autoestados:
El objetivo es estimar .
QPE utiliza varios cúbits de control sobre los que se aplican operaciones controladas de potencias de , como , , y así sucesivamente. Gracias al phase kickback, esas operaciones codifican distintas potencias de la fase sobre el registro de control:
Después entra en juego la transformada cuántica de Fourier inversa, que reorganiza esa información de fase para que pueda recuperarse mediante una medición del registro de control.
Aquí se aprecia mejor por qué el phase kickback es algo más que una curiosidad matemática. Es un mecanismo para codificar información sobre los autovalores de una operación en un registro que posteriormente podemos procesar.
La estimación de fase es, a su vez, una pieza conceptual importante de otros algoritmos cuánticos. Comprender bien este mecanismo evita tratarlos como una sucesión casi mágica de puertas.
Lo que hay que recordar
Si tuviera que reducir el phase kickback a una sola expresión, sería esta:
Pero aprender la fórmula no es suficiente. Lo importante es comprender qué nos está diciendo.
Tenemos una operación controlada; el objetivo es un autoestado de la operación; al actuar , ese estado solo adquiere su autovalor como factor de fase; y, como la operación únicamente se ejecuta en la rama donde el control vale , esa fase se convierte en relativa entre las ramas del cúbit de control.
Después podremos hacerla interferir y convertirla en algo medible.
Para alguien acostumbrado a programar, quizá esta sea la idea más útil con la que quedarse: en computación cuántica, una parte esencial del trabajo de un algoritmo consiste en elegir dónde y cómo codificar la información para poder recuperarla más tarde. A veces estará en los estados de la base computacional; otras, en amplitudes; y en algoritmos como los que hemos visto, estará temporalmente escondida en una fase.
El phase kickback deja de parecer tan misterioso cuando lo miramos así. No es una propiedad añadida artificialmente al circuito. Surge directamente del álgebra de las operaciones controladas y los autoestados. Y una vez que lo reconoces, empiezas a verlo detrás de muchos circuitos cuánticos que antes parecían bastante más difíciles de interpretar.