0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

量子ビットをイメージでつかむ(量子テレポテーション編)

Posted at

 本記事は量子もつれ編量子振幅増幅編の続きとなります。引き続きこちらを教科書としています。Jupyter notebookを https://github.com/sin-gee/ImageOfQuantumBit/ImageOfTeleportation.ipynb に置いておきますのでよろしければ試してみてください。


 初めに、この記事を読まれる方に、量子テレポテーション自体の説明するのは「釈迦に説法」でしょう。とはいえ、量子複製不可能定理は押さえておいた方が、この面白さが伝わるのではないか、と思います。


では始めましょう。今回の(量子)回路は次のとおり(例によって左から右に流れます)。
image.png
(量子である)$q_2$と、(単に$0or1$となる)$q_0$と$q_1$の測定結果を相手に送ることで、($q_0$を直接送らずに)$q_0$をリモートで再現させるものです。$q_2$に$q_0$が複製されたような気になってしまいますが、(元の)$q_0$は測定により破壊されるため、量子複製不可能定理には違反しない訳です。


1.$q_0$を生成します。
image.png
といっても$\lvert0\rangle$では面白みに欠けるので、$\lvert0\rangle$と$\lvert1\rangle$で振幅と位相に差をもたせてあげます。

#量子bit0
Q1 = Qbit(math.pi*0.2,math.pi*0.5)
#q0の生成
qzero,qone = createBy1bit(Q1)

image.png

2.$q_1$と$q_2$を生成して、量子もつれ状態にします。
image.png

#量子bit1
Q2 = Qbit(math.pi*0,math.pi*0)
#量子bit2
Q3 = Qbit(math.pi*0,math.pi*0)

#cx(Highをコントロールビット、lowを標的ビットとした場合)
def cx_high_control(q00,q01,q10,q11):
    q10_,q11_ = x_gate(q10,q11)
    return q00,q01,q10_,q11_

#q1にアダマールゲートを作用後、q2をターゲットビットとしてcxゲートを作用させる(Bell状態にする)
q00,q10 = h_gate(q00,q10)
q01,q11 = h_gate(q01,q11)
q00,q01,q10,q11 = cx_high_control(q00,q01,q10,q11)

3.$q_0$をコントロール、$q_1$をターゲットとして、CNOTを働かせます。
image.png

def merge1to2(q0,q1,q00,q01,q10,q11):
    # 初期の各量子bit列の波の軸
    q000 = np.roll(q0*max(q00),phase(q00))
    q001 = np.roll(q0*max(q01),phase(q01))
    q010 = np.roll(q0*max(q10),phase(q10))
    q011 = np.roll(q0*max(q11),phase(q11))
    q100 = np.roll(q1*max(q00),phase(q00))
    q101 = np.roll(q1*max(q01),phase(q01))
    q110 = np.roll(q1*max(q10),phase(q10))
    q111 = np.roll(q1*max(q11),phase(q11))
    return q000,q001,q010,q011,q100,q101,q110,q111

#q0をコントロールビット、q1をターゲットビットとしてCXゲートを作用させる
q000,q001,q010,q011,q100,q101,q110,q111 = merge1to2(q0,q1,q00,q01,q10,q11)
q000,q010,q100,q110 = cx_high_control(q000,q010,q100,q110)
q001,q011,q101,q111 = cx_high_control(q001,q011,q101,q111)

4.最後に、$q_0$にアダマールを作用させます。
image.png

#q0にアダマールゲートを作用させる
q000,q100 = h_gate(q000,q100)
q001,q101 = h_gate(q001,q101)
q010,q110 = h_gate(q010,q110)
q011,q111 = h_gate(q011,q111)

最後(測定直前)の波の状態を見てみると、こんな感じになっています。
image.png

では、先ほど見た$q_0$の状態と見比べてみます。
まず、$q_0$の測定結果が$0$、$q_1$の測定結果が$0$であった場合、
image.png
image.png
$q_2$はそのままで元の$q_0$の状態を再現できることがわかります。
次に、$q_0$の測定結果が$0$、$q_1$の測定結果が$1$であった場合、
image.png
image.png
$q_2$の$\lvert0\rangle$と$\lvert1\rangle$を入れ替える($X$ゲートを作用させる)ことで元の$q_0$の状態を再現できることがわかります。
そして、$q_0$の測定結果が$1$、$q_1$の測定結果が$0$であった場合、
image.png
image.png
$q_2$の$\lvert1\rangle$を反転させる($Z$ゲートを作用させる)ことで元の$q_0$の状態を再現できることがわかります。
最後に、$q_0$の測定結果が$1$、$q_1$の測定結果も$1$であった場合、
image.png
image.png
$q_2$の$\lvert0\rangle$と$\lvert1\rangle$を入れ替え($X$ゲートを作用させ)た後に、$\lvert1\rangle$を反転させる($Z$ゲートを作用させる)ことで元の$q_0$の状態を再現できることがわかります。


量子テレポテーションの回路を見てきましたが、どうだったでしょうか?
「量子テレポテーション」のタイトルだけでここにいらした方にとっては、”拍子抜け”、”コレじゃない”だったことでしょう。ごめんちゃい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?