Dans Improved Simulation of Stabilizer Circuits par Aaronson et Gottesman, il est expliqué comment calculer un tableau décrivant les produits de tenseur de Pauli auxquels les X et Z observables de chaque qubit sont mappés lorsqu'un circuit de Clifford agit sur eux.
Voici un exemple de circuit de Clifford:
0: -------@-----------X---
| |
1: ---@---|---@---@---@---
| | | |
2: ---|---|---@---|-------
| | |
3: ---@---@-------Y-------
Et le tableau décrivant comment il agit sur les observables X et Z de chaque qubit:
+---------------------+-
| 0 1 2 3 |
+------+---------------------+-
| 0 | XZ X_ __ Z_ |
| 1 | ZZ YZ Z_ ZZ |
| 2 | __ Z_ XZ __ |
| 3 | Z_ X_ __ XZ |
+------+---------------------+-
| sign | ++ ++ ++ ++ |
+------+---------------------+-
Chaque colonne du tableau décrit comment le circuit agit sur l'observable X (moitié gauche de la colonne) et Z observable (la moitié droite de la colonne) de chaque qubit. Par exemple, le côté gauche de la colonne 3 est Z, Z, _, X, ce qui signifie qu'une opération X3 (Pauli X sur le qubit 3) sur le côté droit du circuit équivaut à une opération Z1 * Z2 * X4 sur la main gauche côté du circuit. La ligne «signe» indique le signe du produit, ce qui est important si vous allez simuler une mesure (il vous indique si vous souhaitez inverser le résultat).
Vous pouvez également calculer le tableau pour l'inverse d'un circuit. Dans l'exemple de cas que j'ai donné, le tableau inverse est le suivant:
+---------------------+-
| 0 1 2 3 |
+------+---------------------+-
| 0 | XZ Y_ __ Z_ |
| 1 | _Z YZ Z_ _Z |
| 2 | __ Z_ XZ __ |
| 3 | Z_ Y_ __ XZ |
+------+---------------------+-
| sign | ++ -+ ++ ++ |
+------+---------------------+-
Les tableaux se ressemblent presque si vous transposez leurs lignes et colonnes. Mais les entrées ne sont pas exactement identiques. En plus de la transposition, vous devez encoder les lettres en bits ( _
= 00, X
= 01, Z
= 10, Y
= 11) puis échanger les bits du milieu puis décoder. Par exemple, ZZ code en 1010 qui passe en 1100 qui décode en Y_.
Ma question est la suivante: existe-t-il également une règle simple pour calculer les signes du tableau inverse?
Actuellement, j'inverse ces tableaux en les décomposant en circuits, en inversant les circuits, puis en les multipliant. C'est extrêmement inefficace par rapport à transposer + remplacer, mais si je veux utiliser transposer + remplacer, j'ai besoin d'une règle de signe.