3
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?

More than 3 years have passed since last update.

qiskitを使って量子テレポーテーションの実装する

Posted at

最近、この本を使って量子コンピューティングを勉強し始めました。
練習問題が難しいです(笑)
ここではアウトプットの一環として量子テレポーテーションをqiskitを使って実装していきます!
開発環境はcolabです。

IBMのアカウントを作る

ここからIBMのアカウントを作成します。

qiskitのインストール

pip install qiskit
pip install pylatexenc

下のやつは量子回路を表示させるときに使います。(なくても一応大丈夫ですがあったほうが見やすくなります。)

必要なライブラリのインポート

``` from qiskit import * import numpy as np %matplotlib inline ```

回路を作っていく!

``` qc = QuantumCircuit(3, 1)

#未知の状態を作る
qc.ry(np.pi/5, 0)
qc.barrier()

#ベル状態を作る
qc.h(1)
qc.cx(1, 2)
qc.barrier()

qc.cx(0, 1)
qc.h(0)
qc.barrier()

qc.cz(0, 2)
qc.cx(1, 2)

qc.ry(-np.pi/5, 2)

qc.measure(2, 0)

qc.draw(output="mpl")

実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1127342/e3bc34db-300a-d340-9f56-717d630c552f.png)

回路の説明をしていきます。
数式ベースの話は次の記事に書こうと思いますので、雰囲気だけ掴んでもらえれば幸いです。
最初の$q_0$にかかっている$R_Y$というゲートで、送りたい量子状態をつくっています。
つぎの点線の中は$q_1$と$q_2$をベル状態という特別な状態にしています。
ここまではいわば、準備の段階で、次からが量子テレポーテーションを行うところです。
ここからは次回の記事で説明します

<h2>実際に量子コンピューターに投げてみる</h2>

from qiskit import IBMQ
IBMQ.save_account('###') #ここに自分のtokenをいれる

#使える量子コンピューターを調べる
IBMQ.load_account()
provider = IBMQ.get_provider(hub='ibm-q')
provider.backends()

実行結果に現在使用できる量子コンピューターが表示されます。

最もすいているバックエンドを選ぶ

from qiskit.providers.ibmq import least_busy
large_enough_devices = IBMQ.get_provider().backends(filters=lambda x: x.configuration().n_qubits > 3 and not x.configuration().simulator)
print(large_enough_devices)
real_backend = least_busy(large_enough_devices)

print("ベストなバックエンドは " + real_backend.name())

実行結果に一番すいているものが表示されます。

job = execute(qc,real_backend)


ジョブの実行状態を確認

from qiskit.tools.monitor import job_monitor
job_monitor(job)

自分の場合は一時間ぐらい待ったら実行結果が返ってきました

real_result= job.result()
print(real_result.get_counts(qc))
plot_histogram(real_result.get_counts(qc))

実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1127342/ba2e3a85-ab19-2760-bae5-4bd9ac783a14.png)

<h2>感想</h2>
シミュレーターでられば、0が100%になるんですけど、実際の量子コンピューターだと1が少し出てきてしまいます。誤り制御?がまだ量子コンピューターではできないからこうなるそうです。(自分もまだよくわかっていないです)
鉛筆と紙で理論ばっかり勉強するのも楽しいですが、こうやって実際に自分でやってみるのも楽しいかったです。これからもたくさん利用させていただきたく思います。
3
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
3
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?