Em Simulação Aprimorada de Circuitos Estabilizadores de Aaronson e Gottesman, é explicado como calcular uma tabela que descreve quais produtos tensores Pauli os X e Z observáveis de cada qubit são mapeados quando um circuito de Clifford atua sobre eles.
Aqui como um exemplo de circuito de Clifford:
0: -------@-----------X---
| |
1: ---@---|---@---@---@---
| | | |
2: ---|---|---@---|-------
| | |
3: ---@---@-------Y-------
E a tabela que descreve como ela atua nos observáveis X e 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 coluna da tabela descreve como o circuito atua no X observável (metade esquerda da coluna) e Z (observada na metade direita da coluna) de cada qubit. Por exemplo, o lado esquerdo da coluna 3 é Z, Z, _, X, significando uma operação X3 (Pauli X no qubit 3) no lado direito do circuito é equivalente a uma operação Z1 * Z2 * X4 na mão esquerda lado do circuito. A linha 'sinal' indica o sinal do produto, o que é importante se você deseja simular uma medição (informa se você deve ou não inverter o resultado).
Você também pode calcular a tabela para o inverso de um circuito. No caso de exemplo que eu dei, a tabela inversa é esta:
+---------------------+-
| 0 1 2 3 |
+------+---------------------+-
| 0 | XZ Y_ __ Z_ |
| 1 | _Z YZ Z_ _Z |
| 2 | __ Z_ XZ __ |
| 3 | Z_ Y_ __ XZ |
+------+---------------------+-
| sign | ++ -+ ++ ++ |
+------+---------------------+-
As tabelas terão a mesma aparência se você transpor suas linhas e colunas. Mas as entradas não são exatamente idênticas. Além da transposição, você deve codificar as letras em bits ( _
= 00, X
= 01, Z
= 10, Y
= 11) e depois trocar os bits do meio e decodificar. Por exemplo, ZZ codifica para 1010 que troca para 1100 que decodifica para Y_.
A pergunta que tenho é: existe também uma regra simples para calcular os sinais da tabela inversa?
Atualmente, estou invertendo essas tabelas decompondo-as em circuitos, invertendo os circuitos e depois multiplicando-os novamente. É extremamente ineficiente comparado a transpor + substituir, mas se eu vou usar transpor + substituir, preciso de uma regra de sinal.