0
from qiskit.quantum_info import random_statevector, Statevector
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.visualization import plot_histogram, plot_bloch_multivector, array_to_latex
from qiskit.extensions import Initialize
from qiskit.ignis.verification import marginal_counts
from qiskit import Aer

qr = QuantumRegister(3, name="q")
teleportation_circ = QuantumCircuit(qr)

psi = random_statevector(2)
init_gate = Initialize(psi)

teleportation_circ.append(init_gate, [0])

teleportation_circ.h(1)

teleportation_circ.cx(1,2)

teleportation_circ.barrier()

teleportation_circ.cx(0,1)

teleportation_circ.h(0)

backend = Aer.get_backend('statevector_simulator')

job = backend.run(teleportation_circ)
result = job.result()

outputstate = result.get_statevector(teleportation_circ, decimals=3)
ouptutpsi = Statevector(outputstate, dims=(2, 2, 2))
print(ouptutpsi.to_dict())
teleportation_circ.draw('mpl')

My Capture Result

What I expect is 1/2 ( α |000> + α |011> + α |100> + α |111> + β |010> + β|001> - β|110> - β|101> ). But it seems to give me another basis ? I wonder where goes wrong !

1 Answers1

0

This is the difference between little endian (used by Qiskit) and big endian (the usual way you'll see in most of the literature, and how I suppose you read your results). Check this answer if you want : https://quantumcomputing.stackexchange.com/questions/8244/big-endian-vs-little-endian-in-qiskit.

To sum up, the little-endian notation writes the most significant bit at the left of the bitstring, meaning you'll write a qubit |q_n, q_{n-1}, ..., q_1, q_0> in Qiskit. Notice if you use this convention, then you have the right result!

Lena
  • 238
  • 1
  • 8