Bit di segno rispetto a {0,1} bit
Il primo passo è creare quello che a volte viene chiamato il "grande spostamento notazionale" e pensare ai bit (anche bit classici) come codificati in segni. Questo è produttivo da fare se ciò che ti interessa di più sono le parità delle stringhe di bit, poiché i bit-flip e il sign-flip agiscono sostanzialmente allo stesso modo. Mappiamo 0↦+1 e 1↦−1 , in modo che per esempio la sequenza di bit (0,0,1,0,1) sarebbe rappresentato dalla sequenza di segni (+1,+1,−1,+1,−1) .
Le parità delle sequenze di bit corrispondono quindi ai prodotti delle sequenze di segni. Ad esempio, proprio come riconosceremmo 0⊕0⊕1⊕0⊕1=0 come calcolo di parità, potremmo riconoscere (+1)⋅(+1)⋅(−1)⋅(+1)⋅(−1)=+1 quanto rappresenta lo stesso calcolo di parità usando la convenzione dei segni.
Esercizio.Calcola la 'parità' di (−1,−1,+1,−1) e di (+1,−1,+1,+1) . Sono uguali?
Controlli di parità mediante bit di segno
Nella convenzione {0,1} -bit, i controlli di parità hanno una buona rappresentazione come prodotto a punti di due vettori booleani, in modo da poter realizzare complicati calcoli di parità come trasformazioni lineari. Passando ai bit di segno, abbiamo inevitabilmente perso la connessione con l'algebra lineare a livello notazionale , perché stiamo prendendo prodotti invece di somme. A livello computazionale, poiché questo è solo uno spostamento della notazione, non dobbiamo preoccuparci troppo. Ma a livello matematico puro, ora dobbiamo ripensare un po 'a quello che stiamo facendo con le matrici di controllo di parità.
Quando utilizziamo i bit di segno, possiamo ancora rappresentare una "matrice di controllo di parità" come una matrice di 0 e 1 s, anziché segni ± 1. Perché? Una risposta è che un vettore di riga che descrive un controllo di parità di bit è di tipo diverso rispetto alla sequenza di bit stessi: descrive una funzione sui dati, non i dati stessi. L'array di 0 e 1 ora richiede solo un'interpretazione diversa: invece di coefficienti lineari in una somma, corrispondono agli esponenti di un prodotto. Se abbiamo bit di segno (s1,s2,…,sn)∈{−1,+1}n e vogliamo calcolare un controllo di parità dato da un vettore di riga(b1,b2,…,bn)∈{0,1} , il controllo di parità viene quindi calcolato da
(s1)b1⋅(s2)b2⋅[⋯]⋅(sn)bn∈{−1,+1},
dove ricorda che s0=1 per tutti s . Come con {0,1} -bits, si può pensare di riga (b1,b2,…,bn) come solo rappresenta una 'maschera' che determina quali bit sj un contributo non banale alla parità calcolo.
Esercizio. Calcola il risultato del controllo di parità (0,1,0,1,0,1,0) su (+1,−1,−1,−1,−1,+1,−1) .
Autovalori come parità.
Il motivo per cui vorremmo codificare bit in segni nella teoria dell'informazione quantistica è dovuto al modo in cui le informazioni sono memorizzate in stati quantistici - o più precisamente, al modo in cui possiamo descrivere l'accesso a tali informazioni. In particolare, possiamo parlare molto della base standard, ma il motivo per cui è significativo è perché possiamo estrarre tali informazioni misurando un osservabile .
Questo osservabile potrebbe essere solo il proiettore |1⟩⟨1|, dove|0⟩ ha autovalore 0 e|1⟩ ha autovalore 1, ma è spesso utile preferiscono descrivere le cose in termini di matrici di Pauli. In questo caso, parleremmo della base standard come autofisisdell'operatoreZ , nel qual caso abbiamo|0⟩ come il +1-eigenvector di Ze|1⟩ come -1-eigenvector di Z.
Quindi: abbiamo l'emergere di bit di segno (in questo caso, autovalori) che rappresentano le informazioni memorizzate in un qubit. E ancora meglio, possiamo farlo in un modo che non è specifico alla base standard: possiamo parlare di informazioni memorizzate nella base "coniugata", solo considerando se lo stato è un autigata di X e quale autovalore ha . Ma più di questo, possiamo parlare degli autovalori di un operatore Pauli multi-qubit come codifica di parità di più bit: il prodotto tensore Z⊗Z rappresenta un modo per accedere al prodotto dei bit di segno, vale a dire la parità, di due qubit nella base standard. In questo senso, l'autovalore di uno stato rispetto a un operatore Pauli multi-qubit - se tale autovalore è definito ( cioè nel caso in cui lo stato sia un autovalore dell'operatore Pauli) - è in effetti il risultato di un calcolo di parità di informazioni memorizzate in una scelta di base per ciascuno dei qubit.
Esercizio. Qual è la parità dello stato |11⟩ rispetto alla Z⊗Z ? Questo stato ha una parità ben definita rispetto a X⊗X ?
Esercizio. Qual è la parità dello stato |+−⟩ rispetto a X⊗X ? Questo stato ha una parità ben definita rispetto a?Z⊗Z?
Exercise. What is the parity of |Φ+⟩=12√(|00⟩+|11⟩)rispetto allaZ⊗ZeX⊗X?
Generatori di stabilizzatori come controlli di parità.
Ora siamo in grado di apprezzare il ruolo dei generatori di stabilizzatori come analoghi a una matrice di controllo di parità. Considera il caso del codice CSS a 7 qubit, con generatori
Generatorg1g2g3g4g5g61XZ2XZ3XXZZTensor factors4XZ5XXZZ6XXZZ7XXXZZZ
Ho omesso i fattori del tensore dell'identità sopra, poiché a volte si potrebbe omettere gli 0 da una matrice {0,1}, e per lo stesso motivo: in un dato operatore stabilizzatore, la matrice dell'identità corrisponde a un fattore tensore che non è incluso nella "maschera" dei qubit per i quali stiamo calcolando la parità. Per ogni generatore, siamo interessati solo a quei fattori tensoriali su cui si agisce in qualche modo, perché contribuiscono al risultato di parità.
Ora, le "parole chiave" (gli stati base codificati standard) del codice CSS a 7 qubit sono date da
|0L⟩∝|1L⟩∝|0000000⟩+|0001111⟩+|0110011⟩+|0111100⟩+|1010101⟩+|1011010⟩+|1100110⟩+|1101001⟩=∑y∈C|y⟩,|1111111⟩+|1110000⟩+|1001100⟩+|1000011⟩+|0101010⟩+|0100101⟩+|0011001⟩+|0010110⟩=∑y∈C|y⊕1111111⟩,
where C is the code generated by the bit-strings 0001111, 0110011, and 1010101. Notably, these bit-strings correspond to the positions of the X operators in the generators g1, g2, and g3. While those are stabilisers of the code (and represent parity checks as I've suggested above), we can also consider their action as operators which permute the standard basis. In particular, they will permute the elements of the code C, so that the terms involved in |0L⟩ and |1L⟩ will just be shuffled around.
The generators g4, g5, and g6 above are all describing the parities of information encoded in standard basis states.
The encoded basis states you are given are superpositions of codewords drawn from a linear code, and those codewords all have even parity with respect to the parity-check matrix from that code.
As g4 through g6 just describe those same parity checks, it follows that the eigenvalue of the encoded basis states is +1 (corresponding to even parity).
This is the way in which
'with the observation about the similarities between the parity check matrix and the generator the exercise is "self evident"'
— because the stabilisers either manifestly permute the standard basis terms in the two 'codewords', or manifestly are testing parity properties which by construction the codewords will have.
Moving beyond codewords
The list of generators in the table you provide represent the first steps in a powerful technique, known as the stabiliser formalism, in which states are described using no more or less than the parity properties which are known to hold of them.
Some states, such as standard basis states, conjugate basis states, and the perfectly entangled states |Φ+⟩∝|00⟩+|11⟩ and |Ψ−⟩∝|01⟩−|10⟩ can be completely characterised by their parity properties. (The state |Φ+⟩ is the only one which is a +1-eigenvector of X⊗X and Z⊗Z; the state |Ψ−⟩ is the only one which is a −1-eigenvector of both these operators.) These are known as stabiliser states, and one can consider how they are affected by unitary transformations and measurements by tracking how the parity properties themselves transform. For instance, a state which is stabilised by X⊗X before applying a Hadamard on qubit 1, will be stabilised by Z⊗X afterwards, because (H⊗I)(X⊗X)(H⊗I)=Z⊗X.
Rather than transform the state, we transform the parity property which we know to hold of that state.
You can use this also to characterise how subspaces characterised by these parity properties will transform.
For instance, given an unknown state in the 7-qubit CSS code, I don't know enough about the state to tell you what state you will get if you apply Hadamards on all of the qubits, but I can tell you that it is stabilised by the generators g′j=(H⊗7)gj(H⊗7), which consist of
Generatorg′1g′2g′3g′4g′5g′61ZX2ZX3ZZXXTensor factors4ZX5ZZXX6ZZXX7ZZZXXX
This is just a permutation of the generators of the 7-qubit CSS code, so I can conclude that the result is also a state in that same code.
There is one thing about the stabiliser formalism which might seem mysterious at first: you aren't really dealing with information about the states that tells you anything about how they expand as superpositions of the standard basis. You're just dealing abstractly with the generators. And in fact, this is the point: you don't really want to spend your life writing out exponentially long superpositions all day, do you? What you really want are tools to allow you to reason about quantum states which require you to write things out as linear combinations as rarely as possible, because any time you write something as a linear combination, you are (a) making a lot of work for yourself, and (b) preferring some basis in a way which might prevent you from noticing some useful property which you can access using a different basis.
Still: it is sometimes useful to reason about 'encoded states' in error correcting codes — for instance, in order to see what effect an operation such as H⊗7 might have on the codespace of the 7-qubit code. What should one do instead of writing out superpositions?
The answer is to describe these states in terms of observables — in terms of parity properties — to fix those states. For instance, just as |0⟩ is the +1-eigenstate of Z, we can characterise the logical state |0L⟩ of the 7-qubit CSS code as the +1-eigenstate of
ZL=Z⊗Z⊗Z⊗Z⊗Z⊗Z⊗Z
and similarly, |1L⟩ as the −1-eigenstate of ZL.
(It is important that ZL=Z⊗7{g1,…,g6}ZLX⊗7 anti commutes with Z⊗7 the same way that X anti commutes with Z, and also as X⊗7 commutes with the generators gi, we can describe |+L⟩ as being the +1-eigenstate of
XL=X⊗X⊗X⊗X⊗X⊗X⊗X,
and similarly, |−L⟩ as the −1-eigenstate of XL.
We may say that the encoded standard basis is, in particular, encoded in the parities of all of the qubits with respect to Z operators; and the encoded 'conjugate' basis is encoded in the parities of all of the qubits with respect to X operators.
By fixing a notion of encoded operators, and using this to indirectly represent encoded states, we may observe that
(H⊗7)XL(H⊗7)=ZL,(H⊗7)ZL(H⊗7)=XL,
which is the same relation as obtains between X and Z with respect to conjugation by Hadamards; which allows us to conclude that for this encoding of information in the 7-qubit CSS code, H⊗7 not only preserves the codespace but is an encoded Hadamard operation.
Thus we see that the idea of observables as a way of describing information about a quantum states in the form of sign bits — and in particular tensor products as a way of representing information about parities of bits — plays a central role in describing how the CSS code generators represent parity checks, and also in how we can describe properties of error correcting codes without reference to basis states.