3

Sorry that I keep asking questions for the same subject. It is driving me crazy.

I have followed the [5,1,3] stabilizer code circuit designed by Gottesman in page 35 in his paper (also illustrated in my another question). This code has four stabilizer generators $XZZXI$, $IXZZX$, $XIXZZ$, $ZXIXZ$.

The following is a minimal working example in which I only draw the stabilizer generator $IXZZX$,

from qiskit import *

encoded = QuantumRegister(5,'encoded') stab = QuantumRegister(4,'stab') syndr = ClassicalRegister(4, 'syndr') five = QuantumCircuit(encoded) fiveS = QuantumCircuit(encoded, stab, syndr)

#----------------------------------encode---------------------------------- five.h(encoded[0]) five.h(encoded[1]) five.h(encoded[2]) five.h(encoded[3])

five.z(encoded[0]) five.z(encoded[3])

five.cz(encoded[0],encoded[1]) five.cz(encoded[0],encoded[3]) five.cy(encoded[0],encoded[4])

five.cz(encoded[1],encoded[2]) five.cz(encoded[1],encoded[3]) five.cx(encoded[1],encoded[4])

five.cz(encoded[2],encoded[0]) five.cz(encoded[2],encoded[1]) five.cx(encoded[2],encoded[4])

five.cz(encoded[3],encoded[0]) five.cz(encoded[3],encoded[2]) five.cy(encoded[3],encoded[4])

five.barrier()

#-------------------stabilizer generator IXZZX------------------------------ fiveS.h(stab[1]) fiveS.cx(stab[1],encoded[1]) fiveS.cz(stab[1],encoded[2]) fiveS.cz(stab[1],encoded[3]) fiveS.cx(stab[1],encoded[4]) fiveS.h(stab[1])

fiveS.measure(stab,syndr)

#----------------circuit visualization-------------------- #%matplotlib inline #(five+fiveS).draw(output='mpl')

counts = execute( five+fiveS, Aer.get_backend('qasm_simulator'), shots=10000).result().get_counts() print(counts)

Measuring stabilizer generators should return $0000$ but instead I get half $0000$ and half $0010$ (Same results returns when measuring $XIXZZ$, $ZXIXZ$). Where am I wrong?


Question updated

I tried to add all qubits in one quantum register and produce one quantum circuit.

from qiskit import *

stab = QuantumRegister(9,'stab') syndr = ClassicalRegister(4, 'syndr') five = QuantumCircuit(stab, syndr)

#----------------------------------encode---------------------------------- five.h(stab[0]) five.h(stab[1]) five.h(stab[2]) five.h(stab[3])

five.z(stab[0]) five.z(stab[3])

five.cz(stab[0],stab[1]) five.cz(stab[0],stab[3]) five.cy(stab[0],stab[4])

five.cz(stab[1],stab[2]) five.cz(stab[1],stab[3]) five.cx(stab[1],stab[4])

five.cz(stab[2],stab[0]) five.cz(stab[2],stab[1]) five.cx(stab[2],stab[4])

five.cz(stab[3],stab[0]) five.cz(stab[3],stab[2]) five.cy(stab[3],stab[4])

five.barrier()

#-------------------stabilizer generator IXZZX------------------------------ five.h(stab[6]) five.cx(stab[6],stab[1]) five.cz(stab[6],stab[2]) five.cz(stab[6],stab[3]) five.cx(stab[6],stab[4]) five.h(stab[6])

five.measure(stab[5],syndr[0]) five.measure(stab[6],syndr[1]) five.measure(stab[7],syndr[2]) five.measure(stab[8],syndr[3])

#----------------circuit visualization-------------------- #%matplotlib inline #five.draw(output='mpl')

counts = execute( five, Aer.get_backend('qasm_simulator'), shots=10000).result().get_counts() print(counts)

However, the same happens. The following are my running results.enter image description here

Jacey Li
  • 585
  • 4
  • 10

0 Answers0