Descomputación
Existen ocasiones en las que el procesamiento cuántico produce cubits “basura”. Esto puede afectar los resultados de cómputo debido a que los bits basura, cuyo valor depende del estado de entrada, generalmente destruirán las propiedades de interferencia que son tan importantes para la computación cuántica. Por ejemplo, podría requerirse trabajar con el entrelazamiento y el mismo se efectuaría con cubits que se encuentran en estados inservibles. Es por esto que en estos casos es buena práctica aplicar descomputación, una técnica que permite dejar los cubits auxiliares en para que no interfieran durante el entrelazamiento. La idea consiste en revertir las operaciones que entrelazaron los cubits basura, retornándolos a su estado inicial , con un pequeño costo en el tiempo de procesamiento.
A continuación se explicará el funcionamiento de esta técnica, aplicada sobre un ejemplo de procesamiento cuántico.
El proceso de descomputación involucra tres pasos:
- Computar , donde es el estado inicial, el resultado de aplicar una operación sobre y el estado “basura” resultante tras haber ejecutado . Se utiliza el enfoque estándar que consiste en convertir puertas clásicas y en puertas cuánticas y , respectivamente.
- Agregar un cubit extra en el estado , y aplicar la puerta sobre como el control. Esto permitirá copiar el resultado y se obtendrá:
- Ahora aplicar todas las puertas del primer paso pero en orden inverso, y aplicando en cada paso la puerta inversa. El resultado deshará lo ocurrido en el paso 1, resultando en
Se puede ignorar el estado , el cual no es modificado durante todo el proceso. Así, el resultado de estos pasos es la transformación deseada:
Resumiendo, si se tiene un circuito clásico para computar una función , se puede pensar en las tres etapas del circuito cuántico limpio como: computar , convirtiendo puertas clásicas en cuánticas; copiar la respuesta usando ; y finalmente aplicar descomputación, revirtiendo las puertas e invirtiéndolas.
Suponiendo que se intenta computar , es decir, la operación de tres bits, se usará una puerta para computar el de los primeros dos bits, :

Figura (1): Operación sobre y usando puertas
Luego se usaría otra puerta para aplicar la operación entre el resultado de la operación previa y :

Figura (2): Operación entre el resultado previo y usando puertas
Hasta este punto se ha computado , pero durante el proceso se ha generado también un cubit intermedio en el estado . Este estado no era parte de la especificación original.
Se quería computar
pero se terminó computando
Esto puede evitarse fácilmente aplicando descomputación. Siguiendo los pasos mencionados previamente, y recordando que la puerta es inversa de sí misma:

Figura (3): Aplicación de descomputación sobre la operación usando puertas
El costo de aplicar descomputación es lineal en relación a los números de cubits involucrados en el circuito, ya que deben aplicarse las operaciones inversas a las utilizadas inicialmente. Además, el número de cubits auxiliares escala a lo sumo linealmente para guardar los resultados de las operaciones intermedias. Por lo tanto, es posible aplicar descomputación sobre los circuitos de forma eficiente, utilizando dicha práctica cuando sea requerida con el objetivo de mantener estados de cómputo limpios.