En Simulación mejorada de circuitos estabilizadores de Aaronson y Gottesman, se explica cómo calcular una tabla que describe a qué productos tensoriales Pauli se asignan los observables X y Z de cada qubit a medida que un circuito Clifford actúa sobre ellos.
Aquí como un ejemplo del circuito de Clifford:
0: -------@-----------X---
| |
1: ---@---|---@---@---@---
| | | |
2: ---|---|---@---|-------
| | |
3: ---@---@-------Y-------
Y la tabla que describe cómo actúa sobre los observables X y Z de cada qubit:
+---------------------+-
| 0 1 2 3 |
+------+---------------------+-
| 0 | XZ X_ __ Z_ |
| 1 | ZZ YZ Z_ ZZ |
| 2 | __ Z_ XZ __ |
| 3 | Z_ X_ __ XZ |
+------+---------------------+-
| sign | ++ ++ ++ ++ |
+------+---------------------+-
Cada columna de la tabla describe cómo actúa el circuito en el X observable (mitad izquierda de la columna) y Z observable (mitad derecha de la columna) de cada qubit. Por ejemplo, el lado izquierdo de la columna 3 es Z, Z, _, X, lo que significa que una operación X3 (Pauli X en el qubit 3) en el lado derecho del circuito es equivalente a una operación Z1 * Z2 * X4 en el lado izquierdo lado del circuito. La fila 'signo' indica el signo del producto, lo cual es importante si va a simular una medición (le indica si invertir o no el resultado).
También puede calcular la tabla para la inversa de un circuito. En el caso de ejemplo que he dado, la tabla inversa es esta:
+---------------------+-
| 0 1 2 3 |
+------+---------------------+-
| 0 | XZ Y_ __ Z_ |
| 1 | _Z YZ Z_ _Z |
| 2 | __ Z_ XZ __ |
| 3 | Z_ Y_ __ XZ |
+------+---------------------+-
| sign | ++ -+ ++ ++ |
+------+---------------------+-
Las tablas se ven casi iguales si transpone sus filas y columnas. Pero las entradas no son exactamente idénticas. Además de la transposición, debe codificar las letras en bits ( _
= 00, X
= 01, Z
= 10, Y
= 11), luego intercambiar los bits intermedios y luego decodificar. Por ejemplo, ZZ codifica en 1010 que intercambia en 1100 que decodifica en Y_.
La pregunta que tengo es: ¿existe también una regla simple para calcular los signos de la tabla inversa?
Actualmente estoy invirtiendo estas tablas descomponiéndolas en circuitos, invirtiendo los circuitos y luego multiplicándolos nuevamente. Es extremadamente ineficiente en comparación con transponer + reemplazar, pero si voy a usar transponer + reemplazar necesito una regla de signos.