@yuichirominato 2018.11.16更新 430views

Quantum teleportation with Blueqat

Blueqat Gate

Introduction

I introduced quantum teleportation by continuous valuable programming before.

Continuous Valuable Quantum Teleportation Programming (Japanese lang)
http://blog.mdrft.com/post/208

I would like to implement quantum teleportation using Blueqat SDK on universal gate machine.

Quantum teleportation

Although it is named teleportation, it does not mean particles move instantaneously to different places in space. When observing the state of one of the two particles of quantum entanglement, the other state is confirmed instantaneously.

Quantum teleportation occurs between two particles in the quantum entanglement relationship of EPR pairs.

Quoted:https://en.wikipedia.org/wiki/Quantum_teleportation

As introduced above, quantum states can be photographed by generating quantum entanglement, measuring it, manipulating it, and manipulating the final qubits of the transfer destination with the measurement result.

Look at the circuit

First prepare the state of q0. Next, q1 and q2 make quantum entanglement. You can achieve quantum entanglement state called EPR pair by applying H gate to q1 and CNOT on q1 and q2. And it is called bell measurement, make measurements by generating tangle at q0, q1 and applying H gate to q 0. In this case, we will substitute CX / CZ circuit instead of measurement. Originally we will do the measurement instead of CX / CZ and apply X gate, Z gate.


q0 -?-----*-H-----*-------
q1 ---H-*-X---*---|-------
q2 -----X-----X-H-X-H-----

Blueqat code is,


from blueqat import Circuit
import math

#quantum teleportation circuit
Circuit().h[1].cx[1,2].cx[0,1].h[0].cx[1,2].h[2].cx[0,2].h[2]

Let’s prepare |0> and try the circuit


for i in range(20): 
    c = Circuit().h[1].cx[1,2].cx[0,1].h[0].cx[1,2].h[2].cx[0,2].h[2].m[:] 
    c.run() 
    print(c.last_result()) 

(0, 0, 0)
(0, 1, 0)
(0, 1, 0)
(1, 1, 0)
(0, 1, 0)
(0, 0, 0)
(0, 0, 0)
(0, 1, 0)
(0, 0, 0)
(1, 1, 0)
(0, 1, 0)
(0, 1, 0)
(1, 0, 0)
(1, 1, 0)
(1, 0, 0)
(1, 0, 0)
(0, 1, 0)
(1, 1, 0)
(1, 0, 0)
(1, 1, 0)

We succeded to transfer the state of first qubit to the third qubit.

And next we try |1>


for i in range(20): 
    c = Circuit().x[0].h[1].cx[1,2].cx[0,1].h[0].cx[1,2].h[2].cx[0,2].h[2].m[:] 
    c.run() 
    print(c.last_result()) 

(1, 1, 1)
(0, 0, 1)
(0, 1, 1)
(1, 0, 1)
(1, 0, 1)
(1, 1, 1)
(1, 1, 1)
(0, 1, 1)
(1, 0, 1)
(0, 1, 1)
(1, 1, 1)
(1, 0, 1)
(1, 1, 1)
(1, 1, 1)
(1, 0, 1)
(0, 1, 1)
(0, 1, 1)
(1, 1, 1)
(0, 1, 1)
(1, 0, 1)

And finally try on superposition of 0 and 1.


for i in range(20): 
    c = Circuit().h[0].h[1].cx[1,2].cx[0,1].h[0].cx[1,2].h[2].cx[0,2].h[2].m[:] 
    c.run() 
    print(c.last_result())
                                                                                                          
(1, 1, 0)
(0, 1, 0)
(0, 0, 1)
(0, 1, 1)
(1, 1, 1)
(0, 1, 1)
(1, 1, 0)
(1, 1, 0)
(1, 0, 0)
(0, 0, 0)
(1, 0, 1)
(0, 1, 0)
(1, 0, 1)
(1, 0, 0)
(0, 0, 1)
(1, 1, 0)
(0, 1, 0)
(1, 1, 0)
(0, 0, 1)
(0, 0, 1)

The overlayed state has shifted so that 0 and 1 come to q2 in about half probability.

Recommend


Back To Top